首页 > 其他 > 详细

NOIP 2010 关押罪犯

时间:2018-07-19 20:33:16      阅读:146      评论:0      收藏:0      [点我收藏+]

https://www.luogu.org/problemnew/show/P1525

 

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 struct c{
 5     int x,y,z;
 6 }f[100005];
 7 int n, m, a[20005], b[20005];
 8 bool cmp(c a,c b){
 9     return a.z>b.z;
10 }
11 int find(int x){
12     if(a[x]==x) return x;
13     a[x]=find(a[x]);
14     return a[x];
15 }
16 void ad(int x,int y){
17     x=find(a[x]);
18     y=find(a[y]);
19     a[x]=y;
20 }
21 bool check(int x,int y){
22     x=find(x);
23     y=find(y);
24     if(x==y) return true;
25     return false;
26 }
27 int main(){
28     scanf("%d%d",&n,&m);
29     for(int i=1; i<=n; i++) a[i]=i;
30     for(int i=1; i<=m; i++)
31         scanf("%d%d%d",&f[i].x,&f[i].y,&f[i].z);
32     sort(f+1,f+m+1,cmp);
33     for(int i=1; i<=m+1; i++){
34         if(check(f[i].x,f[i].y)){
35             printf("%d",f[i].z);
36             break;
37         }
38         else{
39             if(!b[f[i].x]) b[f[i].x]=f[i].y;
40             else    ad(b[f[i].x], f[i].y);
41             if(!b[f[i].y]) b[f[i].y]=f[i].x;
42             else    ad(b[f[i].y], f[i].x);
43         }
44     }
45     return 0;
46 }

 

NOIP 2010 关押罪犯

原文:https://www.cnblogs.com/Aze-qwq/p/9337821.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!