求条,悬关
查看原帖
求条,悬关
867904
xinlong666楼主2024/7/22 17:09
#include <bits/stdc++.h>
using namespace std;
#define int long long
vector <int> zxk[10010];
int u,v;
int n,m;
int ans=0;
int vis[10010];
int fl = 0;
void sou(int di){
	vis[di] = 1;
	ans++;
//	cout << di << endl;
	for(int i = 0 ; i < zxk[di].size() ; i ++){
		int x = zxk[di][i];
		if(vis[x]){
			fl = 1;
			return;
		}
		for (int j = 0 ; j < zxk[x].size() ; j++){
			int xx = zxk[x][j];
			if(fl)return;
			if(xx==di||vis[xx])continue;
		    //cout << xx << ' ' << vis[xx] << ' ' << di << endl;
			sou(xx);
		}
	}
}
signed main () {
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin >> n >> m;
	cin >> u >> v;
	zxk[u].push_back(v);
	zxk[v].push_back(u);
	for (int i = 2 ; i <= m ; i ++){
		int a,b;
		cin >> a >> b;
		zxk[a].push_back(b);
		zxk[b].push_back(a);
	}
	sou(u);
	if(fl)ans = 1e9;
	int r = ans;
	ans = 0;
	fl = 0;
	for (int i = 0 ; i <= 10001 ; i ++)vis[i] = 0;
	sou(v);
	if(fl)ans = 1e9;
	if(min(ans,r) == 1e9){
		cout << "Impossible" << endl;
		return 0;
	}
	cout << min(ans,r) << endl;
	return 0;
}
2024/7/22 17:09
加载中...