#893. 封锁阳光大学

封锁阳光大学

题目描述

曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。 阳光大学的校园是一张由 n 个点构成的无向图,n 个点之间由 m 条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在这些道路上刷街了。 非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的两个点时,他们会发生冲突。 询问:最少需要多少只河蟹,可以封锁所有道路并且不发生冲突。

输入格式

第一行两个正整数 n,m,表示节点数和边数。 接下来 m 行,每行两个整数 u,v,表示点 u 到点 v 之间有道路相连。

输出格式

仅一行,如果河蟹无法封锁所有道路,则输出 Impossible,否则输出一个整数,表示最少需要多少只河蟹。

样例

输入样例 1

3 3
1 2
1 3
2 3

输出样例 1

Impossible

输入样例 2

3 2
1 2
2 3

输出样例 2

1

输入样例 3

4 4
1 2
2 3
3 4
4 1

输出样例 3

2

提示

数据规模:1≤n≤10^4,1≤m≤10^5,保证没有重边。

分析:输入:n 个点,m 条边的无向图 目标:选择若干点放置"河蟹",使得所有边都被覆盖(每条边至少有一个端点被选) 约束:相邻两个点不能同时放河蟹(选中的点集是独立集) 本质:二分图染色问题——每条边两端必须颜色不同。对每个连通块,选择颜色数量较少的那种,累加即为答案。若含奇环则输出 Impossible 算法:DFS/BFS 二分图染色