0
已解决
张睿杰
高级守护
高级守护
4770 南海群岛
题目描述 Description
2200年,科技高速发展,政府决定在南海修一批跨海大桥把各个岛屿连接起来。
现给出南海的岛屿数N,和准备修建的跨海大桥数。并告诉你每个大桥连接着哪两个岛屿,并告诉你什么时候修完这个大桥。问最早什么时候任意两个岛屿之间都能联通,即最早什么时候任意两个岛屿都存在至少一个修建完成的跨海大桥(可以由多个跨海大桥连成一条道路)
输入描述 Input Description
第1行两个正整数N,M
下面M行,每行3个正整数x, y, t告诉你这个跨海大桥连着x,y两个岛屿,在时间t时能修建完成这个跨海大桥。
输出描述 Output Description
如果全部跨海大桥修建完毕仍然存在两个岛屿无法通车,则输出-1,否则输出最早什么时候任意两个岛屿能够通车。
样例输入 Sample Input
4 4
1 2 6
1 3 4
1 4 5
4 2 3
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
N≤1000,M≤100000
x≤N,y≤N,t≤100000
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int n,m;
vector<int> g[100010];
struct node{
int x,y,t;
}a[100010];
bool cmp(const node& s1, const node& s2)
{
return s1.t<s2.t;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>a[i].x>>a[i].y>>a[i].t;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=m;i++) {
g[a[i].x].push_back(a[i].y);
for(int j=0;j<g[a[i].y].size();j++)
g[a[i].x].push_back(g[a[i].y][j]);
g[a[i].y].push_back(a[i].x);
for(int j=0;j<g[a[i].x].size();j++)
g[a[i].y].push_back(g[a[i].x][j]);
if(g[1].size()==n-1) {
cout<<a[i].t;
return 0;
}
}
cout<<-1<<endl;
return 0;
}
不知道怎么回事,Runtime Error:0分 了,求各位大佬出山帮忙