1 条题解

  • 0
    @ 2025-11-30 16:26:39

    Java :

    import java.io.*;
    import java.util.*;
    
    public class Main{
    
    	static int f[]=new int[1005];
    	static int r[]=new int[1005];
    	
    	public static int getRoot(int n){
    		return f[n]=f[n]==n?n:getRoot(f[n]);
    	}
    	
    	public static void Union(int fA,int fB){
    		if(r[fA]>=r[fB]){
    			f[fB]=f[fA];
    			r[fA]+=r[fB];
    		}else{
    			f[fA]=f[fB];
    			r[fB]+=r[fA];
    		}
    	}
    	
    	public static void main(String args[]){
    		Scanner cin=new Scanner(System.in);
    		int N=cin.nextInt(),M=cin.nextInt();
    		while(M!=0||N!=0){
    			boolean flag=true;
    			for(int i=1;i<=N;i++){
    				r[i]=1;f[i]=i;
    			}
    			for(int i=0;i<M;i++){
    				int A=cin.nextInt(),B=cin.nextInt();
    				int fA=getRoot(A),fB=getRoot(B);
    				if(fA==fB)flag=false;
    				else Union(fA,fB);
    			}
    			int rt=getRoot(1);
    			for(int i=2;i<=N&&flag;i++)
    				if(getRoot(i)!=rt)
    					flag=false;
    			if(flag)System.out.println("Yes");
    			else System.out.println("No");
    N=cin.nextInt();M=cin.nextInt();
    		}
    	}
    }
    
    • 1

    信息

    ID
    1226
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者