题目1545:奇怪的连通图
来源:互联网 发布:西湖金座大酒店桑拿js 编辑:程序博客网 时间:2024/05/08 02:52
// 先对边排序然后贪心、用并查集建最小生成树、然后判断1和N是否连通
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
#define N 10001
struct E{ // 边结构体
int a,b; // 两个结点编号
int cost; // 边权值
bool operator < (const E &A) const{
return cost<A.cost;
}
}edge[100001];
int Tree[N];
int findRoot(int x){ // 非递归型并查集
int r=x;
while(r!=Tree[r]) r=Tree[r];
int b=x;
int f;
while(b!=r){
f=Tree[b]; Tree[b]=r; b=f; // 遍历过程中将这些结点的双亲结点都设置为已经查找得到的根结点编号
}
return r;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=1;i<=n;i++) Tree[i]=i;
for(int i=0;i<m;i++) scanf("%d%d%d",&edge[i].a,&edge[i].b,&edge[i].cost);
sort(edge,edge+m); // 对边进行从小到大排序
int max=0,flag=0; // 最终的答案,最小生成树的最大权值
for(int i=0;i<m;i++){
int a=findRoot(edge[i].a);
int b=findRoot(edge[i].b);
if(a!=b) Tree[a]=b;
if(findRoot(1)==findRoot(n)){
max=edge[i].cost;flag=1;break;
}
}
if(flag==0) printf("-1\n");
else printf("%d\n",max);
}
return 0;
}
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
#define N 10001
struct E{ // 边结构体
int a,b; // 两个结点编号
int cost; // 边权值
bool operator < (const E &A) const{
return cost<A.cost;
}
}edge[100001];
int Tree[N];
int findRoot(int x){ // 非递归型并查集
int r=x;
while(r!=Tree[r]) r=Tree[r];
int b=x;
int f;
while(b!=r){
f=Tree[b]; Tree[b]=r; b=f; // 遍历过程中将这些结点的双亲结点都设置为已经查找得到的根结点编号
}
return r;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=1;i<=n;i++) Tree[i]=i;
for(int i=0;i<m;i++) scanf("%d%d%d",&edge[i].a,&edge[i].b,&edge[i].cost);
sort(edge,edge+m); // 对边进行从小到大排序
int max=0,flag=0; // 最终的答案,最小生成树的最大权值
for(int i=0;i<m;i++){
int a=findRoot(edge[i].a);
int b=findRoot(edge[i].b);
if(a!=b) Tree[a]=b;
if(findRoot(1)==findRoot(n)){
max=edge[i].cost;flag=1;break;
}
}
if(flag==0) printf("-1\n");
else printf("%d\n",max);
}
return 0;
}
0 0
- 题目1545:奇怪的连通图
- 题目1545:奇怪的连通图
- 【九度】题目1545:奇怪的连通图
- <九度 OJ>题目1545:奇怪的连通图
- 奇怪的连通图
- 奇怪的连通图_1545
- 九度oj 1545奇怪的连通图
- 九度OJ 1545 奇怪的连通图
- 奇怪的题目
- 奇怪的题目
- 题目68:连通图
- 题目1109:连通图
- 题目1109:连通图
- 题目1109:连通图
- 题目1109:连通图
- 题目1109:连通图
- 题目1109:连通图
- 题目1109:连通图
- 签到程序(修改)
- Android系统之闹钟模块浅析
- Oracle 统计信息, 老话题中的新故事
- 计算机视觉之(一)利用Harris检测子进行角点特征检测(含matlab源码)
- 拼数
- 题目1545:奇怪的连通图
- IT行业50个论坛
- 818工程师职业的看法与体会。
- AOJ-AHU-OJ-357 YH Triangle
- Java-选择排序
- 常用邮箱POP3和SMTP服务器
- 升级ADT22.6后,Android模拟器无法创建
- WebService到底是什么? .
- 圆形进度对话框