并查+无向图
一遍过
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int f[N];
vector<int> graph[N];
int n;
void init(){
for(int i=0; i<N; ++i){
f[i] = i;
}
}
int find(int x){
return f[x] == x ? x : f[x] = find(f[x]);
}
void merge(int x, int y ){
int fx = find(x);
int fy = find( y );
if(fx != fy){
f[fx] = fy;
}
}
int main()
{
int m,k;
cin>>n>>m>>k;
init();
for(int i=0; i<m; ++i){
int x,y,z;
cin>>x>>y>>z;
if( z == 1){
merge(x,y);
}else{
graph[x].push_back(y);
graph[y].push_back(x);
}
}
for(int i=0; i<k; ++i){
int x,y;
cin>>x>>y;
int fx= find(x);
int fy = find(y);
int flag = 0;
for(int j=0; j<graph[x].size(); ++j){
if(graph[x][j] == y){
flag = 1;
}
}
if(fx == fy && !flag){
cout<<"No problem"<<endl;
}else if(fx != fy && !flag){
cout<<"OK"<<endl;
}else if (fx == fy && flag){
cout<<"OK but..."<<endl;
}else if( flag ){
cout<<"No way" <<endl;
}
}
return 0;
}