L2-010. 排座位(并查集)

背模板直接AC,没有任何坑点。

#include<iostream>
#include<cstring>
using namespace std;
int n,m,k,que[105],map[105][105];
int getf(int k)
{
    return que[k]==k?k:que[k]=getf(que[k]);
}
int merge(int a,int b)
{
    if (getf(a)!=getf(b))
    que[getf(a)]=getf(b);
}
int main()
{
    int i,j,a,b,c;
    for (i=0;i<105;i++)
    que[i]=i;
    cin>>n>>m>>k;
    for (i=0;i<m;i++)
    {
        cin>>a>>b>>c;
        map[a][b]=c;
        map[b][a]=c;
        if (c==1)
        merge(a,b);
    }
    for (i=0;i<k;i++)
    {
        cin>>a>>b;
        if (getf(a)==getf(b)&&map[a][b]!=-1)
        cout<<"No problem"<<endl;
        else if (getf(a)!=getf(b)&&map[a][b]!=-1)
        cout<<"OK"<<endl;
        else if (getf(a)==getf(b)&&map[a][b]==-1)
        cout<<"OK but..."<<endl;
        else if (getf(a)!=getf(b)&&map[a][b]==-1)
        cout<<"No way"<<endl;
    }
}
全部评论

相关推荐

头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务