解题思路:利用并查集合并可能能坐一桌的人,因为并查集可能会合并你的敌人进去,所以需要再用一个二维数组来辅助确认是否能坐在一起
#include
using namespace std;
int f[101];
int find(int x){while(x!=f[x])x=f[x];return x;
}
void uniont(int a,int b){int fa=find(a);int fb=find(b);if(fa>n>>m>>k;int relate[n+1][n+1];memset(relate,0,sizeof(relate));for(int j=1;j<=m;j++){cin>>a>>b>>link;relate[a][b]=link;//既然a和b是敌人或朋友甚至不是朋友,那么反过来也是relate[b][a]=link;if(link!=-1)uniont(a,b);}for(int i=1;i<=k;i++){cin>>a>>b;if(relate[a][b]==1)//朋友cout<<"No problem"<
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!