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;
    }
}
全部评论

相关推荐

totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务