#include<iostream>
#include<vector>
using namespace std;
vector<int> a;
int find(int x){
return a[x] == x ? x : a[x] = find(a[x]);
}
void unin(int x,int y){
a[find(x)] = find(y);
}
int main(){
int n, m, k;
cin >> n >> m >> k;
a.resize(n + 1);
for (int i = 1; i <= n;++i)
a[i] = i;
vector<vector<int>> v(n + 1, vector<int>(n + 1));
while(m--){
int x, y, c;
cin >> x >> y >> c;
if(c==1)
unin(x, y);
else
v[x][y] = v[y][x] = 1;
}
while(k--){
int x, y;
cin >> x >> y;
if(find(x)==find(y)&&v[x][y]==0)
cout << "No problem\n";
else if(find(x)!=find(y)&&v[x][y]==0)
cout << "OK\n";
else if(find(x)==find(y)&&v[x][y]==1)
cout << "OK but...\n";
else
cout << "No way\n";
}
}
【并查集】L2-010 排座位 (25 分)
最新推荐文章于 2024-05-28 15:43:55 发布