zoj3080 ChiBi --- floyd求连通块内最短路

2015-07-24 05:50:41 · 作者: · 浏览: 6

此题最大最小搞的太复杂。。。并查集维护连通块,连通块内floyd就可以了



#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
           #define inf 0x3f3f3f3f #define eps 1e-6 #define ll __int64 using namespace std; vector
           
             part[1010]; int mp[1010][1010],n,r[1010],t[1010],vis[1010],dis[1010][1010]; int root(int a) { if(r[a]==a) return a; return r[a]=root(r[a]); } void merge(int a,int b) { int ra=root(a); int rb=root(b); if(ra!=rb) r[ra]=rb; } int floyd(int s) { int m,i,j,k,mmax,mmin; m=part[s].size(); for(i=0;i