40分wa求调
查看原帖
40分wa求调
1232851
Neokaye楼主2024/12/7 21:09
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5;
vector<int> e[N];
int vis[N],sum[N],colors[N];
void add_edge(int u,int v){
	e[u].push_back(v);
	e[v].push_back(u);
}
bool fill_color(int u,int color){
	if(vis[u]){
		if(colors[u]==color) return true;
		else return false;
	}
	vis[u]=true;
	sum[colors[u]=color]++;
	bool flag=true;
	for(int i=0;i<e[u].size();i++){
		flag=flag&&fill_color(e[u][i],!color);
	}
	return flag;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n,m;cin>>n>>m;
	while(m--){
		int u,v;cin>>u>>v;
		add_edge(u,v);
	}	
	int ans=0;
	for(int i=1;i<=n;i++){
		if(vis[i]) continue;
		sum[1]=sum[0]=0;
		if(!fill_color(1,0)){
			cout<<"Impossible";
			exit(0);
		}
		ans+=min(sum[1],sum[0]);
	}
	cout<<ans;
	return 0;
}
2024/12/7 21:09
加载中...