hdu-1213 how many tables

2015-01-27 18:03:26 · 作者: · 浏览: 32

?

?

#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
       
         #include
        
          #include
         
           #include
          
            #include
           
             #include
            
              #include
              #include
              
                #include
               
                 #include
                
                  #include
                 
                   #include
                  
                    using namespace std; int n, m, t; int p[10000]; int b[10000]; int find(int x) { if (x == p[x]) return x; else return find(p[x]); } int fa, fb; void un(int x, int y) { fa = find(p[x]); fb = find(p[y]); if (fa != fb) { if (fa>fb) p[fa] = fb; else p[fb] = fa; } } int main() { scanf(%d,&t); while (t--) { scanf(%d%d, &n, &m); for (int i = 1; i <= n; i++) p[i] = i; int sum = 0; int a, b; for (int i = 1; i <= m; i++) { scanf(%d%d, &a, &b); un(a, b); } for (int i = 1; i <= n; i++) { if (p[i] == i) sum++; } printf(%d , sum); } return 0; }
                  
                 
                
               
              
            
           
          
         
        
       
      
     
    
   
  


?