50分求调
查看原帖
50分求调
1122530
elpsconr楼主2024/8/1 01:01

为啥才50分,感觉写的很对啊

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int,int>
#define cy cout<<"YES"<<endl
#define cn cout<<"NO"<<endl
const int N=3e5+6,yyx=1e9+7;
int n,m,a[N],pre[N],cl[N];
vector<int> to[N];
vector<int> t1,t2;
int tosat(){
    int flag=0;
    for(int i=1;i<=n;++i){
        if(!cl[i]){
            queue<PII> q;
            q.push({i,1});
            while(q.size()){
                auto[c,ty]=q.front();q.pop();
                if(cl[c]==3-ty) flag=1;
                if(cl[c]) continue;
                cl[c]=ty;
                if(ty==1) t1.push_back(c);
                if(ty==2) t2.push_back(c);
                for(auto v:to[c]) q.push({v,3-ty});
            }
        }
    }
    return flag;
}
void solve(){
    cin>>n>>m;
    for(int i=1;i<=m;++i){
        int u,v;cin>>u>>v;
        to[u].push_back(v);
        to[v].push_back(u);
    }
    tosat();
    int x=t1.size(),y=t2.size();
    cout<<min(x,y)<<" "<<max(x,y)<<endl;
}
signed main(){
    cin.tie(0)->sync_with_stdio(0);
    int t=1;
    //cin>>t;
    while(t--)
    solve();
    return 0;
}
2024/8/1 01:01
加载中...