rt 求助
代码如下:
#include<bits/stdc++.h>
using namespace std;
struct node{
int to,next;
}edge[200005];
int head[10005],cnt=1,n,m;
bool vis[10005];
int color[10005],sum[2];
void add(int u,int v){
edge[cnt].to=v;
edge[cnt].next=head[u];
head[u]=cnt++;
}
void dfs(int x,int c){
vis[x]=1;
color[x]=c;
sum[c]++;
for(int i=head[x];i;i=edge[i].next){
int v=edge[i].to;
if(vis[v]){
if(color[v]==1-c){
continue;
}
else{
cout<<"Impossible";
exit(0);
}
}
else{
dfs(v,1-c);
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int a,b;
cin>>a>>b;
add(a,b);
add(b,a);
}
int ans=0;
for(int i=1;i<=n;i++){
sum[0]=0,sum[1]=0;
if(!vis[i]){
dfs(1,0);
}
ans+=min(sum[0],sum[1]);
}
cout<<ans;
return 0;
}
在线等qwq