社区讨论

64pts求助,悬2关

P15547「Stoi2037」白色风车参与者 12已保存回复 14

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
14 条
当前快照
1 份
快照标识符
@mm7ms5n5
此快照首次捕获于
2026/03/01 18:52
6 天前
此快照最后确认于
2026/03/04 16:55
3 天前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int f[1000006];
int find(int x){
    if(f[x]) return f[x]=find(f[x]);
    else return x;
}
int n,m,x,y;
vector<int>g[1000005];
int col[1000005];
bool is(int start) {
    queue<int>q;
    q.push(start);
    col[start]=1;
    while(!q.empty()) {
        int u=q.front();
        q.pop();
        for(int v:g[u]){
            //2=3-1 1=3-2
            if(col[v]==0) {
                col[v]=3-col[u];
                q.push(v);
            } else if(col[v]==col[u]){ 
                return 0;
            }
        }
    }
    return 1;
}

int vis[1000005];
int dis(int st,int en){
    queue<pair<int,int>>q;
    q.push({st,0});
    int ans=1e9;
    while(!q.empty()){
        auto [u,d]=q.front();
        q.pop();
        if(u==en) {
            ans=min(ans,d);
            break;
        }
        for(int v:g[u]){
            if(vis[v]) continue;
            vis[v]=1;
            q.push({v,d+1});
        }
    }
    return ans;
}
void solve(){
    cin>>n>>m>>x>>y;
    bool fl=0;
    for(int i=1;i<=m;i++){
        int u,v;
        cin>>u>>v;
        for(int k:g[u]){
            if(k==v) {
                fl=1;
                break;
            }
        }
        g[u].push_back(v);
        g[v].push_back(u);
        if(find(u)==find(v)) continue;
        f[find(u)]=find(v);
        
        
        
        
    }
    if(find(x)!=find(y)||n==m+1){
        cout<<"No\n";
        return ;
    }
    if(!is(x)){
        cout<<"Yes\n";
    }else{
        if(dis(x,y)%2==1){
            cout<<"Yes\n";
        }else{
            cout<<"No\n";
        }
    }
    
    for(int i=1;i<=n;i++){
        g[i].clear();
        col[i]=f[i]=vis[i]=0;
    }
}
signed main(){
    std::ios::sync_with_stdio(false);cin.tie(0);
    int id,t;
    cin>>id>>t;
    while(t--){
        solve();
    }
    return 0;
}

回复

14 条回复,欢迎继续交流。

正在加载回复...