标签:node const int Kruskal 2485 father Highways return include
整理板子的时候翻出来的题,Kruskal板子题。
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #include<cmath> 6 #include<string> 7 #include<stack> 8 #include<queue> 9 #include<vector> 10 #include<cstdlib> 11 //#include<windows.h> 12 #define first fi 13 #define second se 14 using namespace std; 15 typedef long long ll; 16 const int N = 1e6+10; 17 const int INF = 0x3f3f3f3f; 18 const int inf = - INF; 19 const int mod = 1e9+7; 20 const double pi = acos(-1.0); 21 int n,m; 22 int father[505]; 23 void init(){ 24 m=0; 25 memset(father,-1,sizeof(father)); 26 } 27 struct node { 28 int u,v,w; 29 node(){} 30 node(int u,int v, int w):u(u),v(v),w(w){} 31 bool operator < (const node &rhs)const{ 32 return w < rhs.w; 33 } 34 }edge[N]; 35 int Find(int x){ 36 return father[x]==-1?x:father[x]=Find(father[x]); 37 } 38 int Kruskal(){ 39 int maxn=-1; 40 int cnt=0; 41 for(int i=0;i<m;i++){ 42 int u=edge[i].u; 43 int v=edge[i].v; 44 if(Find(u)!=Find(v)){ 45 father[Find(u)]=Find(v); 46 maxn=max(maxn,edge[i].w); 47 if(++cnt>=n-1) return maxn; 48 } 49 } 50 return -1; 51 } 52 int main(){ 53 int T; 54 scanf("%d",&T); 55 while(T--){ 56 scanf("%d",&n); 57 init(); 58 int t; 59 for(int i=1;i<=n;i++){ 60 for(int j=1;j<=n;j++){ 61 scanf("%d",&t); 62 edge[m++]=node(i,j,t); 63 } 64 } 65 sort(edge,edge+m); 66 printf("%d\n",Kruskal()); 67 } 68 //system("pause"); 69 return 0; 70 }
标签:node,const,int,Kruskal,2485,father,Highways,return,include 来源: https://www.cnblogs.com/yoshinaripb/p/11786041.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。