这题真坑爹啊。。。一直RE。。不开大不行啊。。。
题意:找出1到n最大路径的一段最小路。
#include<stdio.h>
#include<algorithm>
using namespace std;
#define MX 100000000
int pre[105010];
struct point
{
int in,out,leth;
}eg[105010];
int n,m;
bool cmp(point aa,point bb)
{
return aa.leth>bb.leth;
}
int find(int root)
{
int now,w=root;
while(root!=pre[root])
root=pre[root];
while(pre[w]!=root)
{
now=pre[w];
pre[w]=root;
w=now;
}
return root;
}
int main()
{
int cas=1,Cas;
scanf("%d",&Cas);
while(Cas--)
{
scanf("%d%d",&n,&m);
for(int i=0;i<=n;i++)pre[i]=i;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&eg[i].in,&eg[i].out,&eg[i].leth);
}
sort(eg,eg+m,cmp);
int max;
for(int i=0;i<m;i++)
{
if(find(1)!=find(n))
{
max=eg[i].leth;
int x=find(eg[i].in),y=find(eg[i].out);
if(x!=y)
pre[y]=x;
}
else break;
}
printf("Scenario #%d:\n%d\n\n",cas++,max);
}
return 0;
}