比赛 防止颓废的小练习v0.2 评测结果 AAAAAAAAAA
题目名称 关押罪犯 最终得分 100
用户昵称 Hzoi_Go灬Fire 运行时间 0.137 s
代码语言 C++ 内存使用 3.36 MiB
提交时间 2016-10-18 12:18:46
显示代码纯文本
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=201000;
struct Node{
	int x,y,date;
}a[maxn];
int n,m,root[maxn];
int Findroot(int x){
	if(root[x]!=x){
		root[x]=Findroot(root[x]);
	}
	return root[x];
}
bool Comp(const Node & a,const Node & b){
	return a.date>b.date;
}
int main(){
	freopen("prison1.in","r",stdin);
	freopen("prison1.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].date);
	for(int i=1;i<=n*2;i++)root[i]=i;
	sort(a+1,a+m+1,Comp);
	for(int i=1;i<=m;i++){
		int rx=Findroot(a[i].x),ry=Findroot(a[i].y);
		if(rx==ry){
			printf("%d\n",a[i].date);
			return 0;
		}
		else {
			root[ry]=Findroot(a[i].x+n);
			root[rx]=Findroot(a[i].y+n);
		}
	}
	printf("0\n");
}