1 条题解

  • 5
    @ 2026-8-9 16:13:23

    这题太简单了没人写题解吗?那我献个丑。

    using namespace std;
    int n,m,q,x,y;
    int f[1004];
    int find(int x){
    	if(f[x]==x) return x;
    	return f[x]=find(f[x]);
    }
    int main(){
    	scanf("%d%d%d",&n,&m,&q);
    	for(int i=1;i<=n;i++) f[i]=i; 
    	for(int i=1;i<=m;i++){
    		scanf("%d%d",&x,&y);
    		int fx=find(x),fy=find(y);
    		f[fx]=fy;
    	}
    	while(q--){
    		scanf("%d%d",&x,&y);
    		if(find(x)==find(y)) printf("Y\n");
    		else printf("N\n");
    	}
    	return 0;
    }
    
    
    • 1

    *【并查集】判断两点是否连通[USACO10JAN] Tea Time S

    信息

    ID
    1694
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    29
    已通过
    24
    上传者