數據中心201812-4

201812-4
試題名稱: 數據中心
時間限制: 1.0s
內存限制: 512.0MB
問題描述:


樣例輸入

4
5
1
1 2 3
1 3 4
1 4 5
2 3 8
3 4 2

樣例輸出

4

樣例說明

  下圖是樣例說明。

答題欄

 

裸kruskal 求最大邊

#include<bits/stdc++.h>
using namespace std;
struct node
{
	int x, y , t;
}s[500500];
int pre[500500];
bool cmp(node a, node b){
	return a.t < b.t;
}
int findd(int x)
{
	if(x == pre[x])
		return x;
	return pre[x] = findd(pre[x]);
}
bool merge(int x, int y){
	int fx = findd(x);
	int fy = findd(y);
	if(fx != fy)
	{
		pre[fx] = fy;
		return true;
	}	
	return false;
}
int main()
{
	int n , m , k;
	scanf("%d%d%d",&n,&m,&k) ;
	for(int i = 1; i <= m ; i ++)
		scanf("%d%d%d",&s[i].x,&s[i].y,&s[i].t);
	sort(s + 1,s + 1 + m,cmp);
	int cnt = 0;
	for(int i = 1; i <= n; i ++)
		pre[i] = i;
	int maxn = 0;
	for(int i = 1; i <= m; i ++)
	{
		if(merge(s[i].x,s[i].y))
		{
			cnt++;
			maxn = max(s[i].t, maxn);
		}
		if(cnt == n - 1)
		{
			printf("%d\n",maxn);
			return 0;
		}	
	}
	return  0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章