L2-010.排座位

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<stack>
using namespace std;
int num[120][120];
int num1[120];
int getf(int v)
{
    if(num1[v]==v)
        return v;
    else
        return getf(num1[v]);
}
int main()
{
    int n,m,k;
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++)
        num1[i]=i;
    for(int i=0;i<m;i++)
    {
        int a,b,c;
        cin>>a>>b>>c;
        num[a][b]=num[b][a]=c;
        if(c==1)
        {
            a=getf(a);
            b=getf(b);
            if(a!=b)
                num1[a]=b;
        }
    }
    //for(int i=1;i<=n;i++)
      //  cout<<num1[i]<<" ";
    //cout<<endl;
    for(int i=0;i<k;i++)
    {
        int a,b;
        cin>>a>>b;
        if(num[a][b]==1||num[a][b]==0&&getf(a)==getf(b))
            cout<<"No problem\n";
        else
        {
            if(num[a][b]==-1)
            {
                if(getf(a)==getf(b))
                    cout<<"OK but...\n";
                else
                    cout<<"No way\n";
            }
            else
                cout<<"OK\n";
        }
    }
    return 0;
}

发布了45 篇原创文章 · 获赞 1 · 访问量 6772

猜你喜欢

转载自blog.csdn.net/Ls_attack/article/details/79822801