不知道为什么不管怎么输入v一直等于u
查看原帖
不知道为什么不管怎么输入v一直等于u
601009
S1746楼主2023/7/16 11:30
#include<bits/stdc++.h>
using namespace std;
//int v[10010][10010];
vector <int> a[10010];
int color1[10010];
/*struct edege{
    int from,to;
}; */
int aa(int pos,int sum,int color){
    for(int i=0;i<a[pos].size();i++){
        if(color1[a[pos][i]]==color){
            return -1;
        }
        else{
            if(color1[a[pos][i]]==2){
            color1[a[pos][i]]=1-color;
            if(color==0){
                sum++;
            }
            return aa(a[pos][i],sum,1-color);
            }
            else{
                continue;
            }
        }
    }
        return sum;
}
int main(){
int n,m,k=20000;
cin>>n>>m;
while(m--){
    int u,v;
    cin>>u>>v;
    if(min(u,v)<k){
        k=min(u,v);
    }
    a[u].push_back(v);
    a[v].push_back(u);
}
for(int i=0;i<n;i++){
    color1[i]=2;
}
if(aa(k,0,1)<0||aa(k,0,0)<0){
    cout<<"Impossible";
}
else{
    cout<<min(aa(k,0,1),aa(k,0,0));
}
return 0;
}
2023/7/16 11:30
加载中...