并查集模板
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int Friend[N];
bool Enemy[N][N];
int findFriend(int x)
{
int a = x;
while (Friend[x] != x)
{
x = Friend[x];
}
while (a != x)
{
int tmp = Friend[a];
Friend[a] = x;
a = tmp;
}
return x;
}
void unionFriend(int a, int b)
{
int fa = findFriend(a);
int fb = findFriend(b);
if (fa != fb)
{
Friend[fa] = fb;
}
}
bool isFriend(int a,int b){
return findFriend(a)==findFriend(b);
}
int main(void)
{
int n, m, k;
scanf("%d %d %d", &n, &m, &k);
for (int i = 0; i < N; i++)
{
Friend[i] = i;
}
for (int i = 0; i < m; i++)
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (c == 1)
{
unionFriend(a, b);
}
else if (c == -1)
{
Enemy[a][b] = true;
Enemy[b][a] = true;
}
}
while(k--){
int a,b;
scanf("%d %d",&a,&b);
bool isF = isFriend(a,b);
bool isE = Enemy[a][b];
if(isF&&!isE){
cout << "No problem" << endl;
}else if(!isF&&!isE){
cout << "OK" << endl;
}else if(isF&&isE){
cout << "OK but..." << endl;
}else if(!isF&&isE){
cout << "No way" << endl;
}
}
return 0;
}