POJ 1679 The Unique MST(判断最小生成树是否唯一)
来源:互联网 发布:怎样注销淘宝账户 编辑:程序博客网 时间:2024/09/21 09:04
题目链接:kuangbin带你飞 专题六 最小生成树 K - The Unique MST
题意
给定一无向图,判断最小生成树是否唯一。
思路
先求出最小生成树,记录结果,依次删除树中各边,再求最小生成树,看与最初结果是否相同,若相同则不唯一
代码
//// main.cpp// demo//// Created by shiyi-mac on 16/1/2.// Copyright © 2016年 shiyi-mac. All rights reserved.//#include <algorithm>#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <queue>#include <stack>#include <vector>using namespace std;const int N = 109;const int MAX = 100000000;int d[N];int g[N][N];int fa[N];pair<int, int> v[N];int prim(int n, int m, bool f){ for(int i=0;i<n;i++) { d[i] = g[0][i]; fa[i] = 0; } d[0] = -1; int ans = 0; for(int i=1;i<n;i++) { int min = MAX, mini = -1; for(int j=0;j<n;j++) { if(d[j]!=-1 && d[j]<min) { min = d[j]; mini = j; } } if(mini == -1) return -1; d[mini] = -1; if(f) { v[i].first = mini; v[i].second = fa[mini]; } ans += min; for(int j=0;j<n;j++) if(d[j]!=-1 && d[j] > g[mini][j]) { fa[j] = mini; d[j] = g[mini][j]; } } return ans;}int main(){ int T; scanf("%d",&T); while(T--) { int n, m; memset(g, 0x3f, sizeof(g)); scanf("%d%d",&n, &m); int a, b, c; for(int i=0;i<m;i++) { scanf("%d%d%d", &a, &b, &c); g[a-1][b-1] = g[b-1][a-1] = c; } int ans = prim(n, m, 1); for(int i=1;i<n;i++) { int t = g[v[i].first][v[i].second]; g[v[i].first][v[i].second] = g[v[i].second][v[i].first] = MAX; if(ans == prim(n, m, 0)) { ans = -1; break; } g[v[i].first][v[i].second] = g[v[i].second][v[i].first] = t; } if(ans == -1) printf("Not Unique!\n"); else printf("%d\n",ans); } return 0;}
0 0
- poj-1679-The Unique MST-最小生成树是否唯一
- poj 1679 The Unique MST (最小生成树是否唯一)
- POJ 1679 The Unique MST 判断最小生成树是否唯一/次小生成树
- poj 1679 The Unique MST(判断最小生成树是否唯一)
- POJ:1679 The Unique MST(判断最小生成树是否唯一)
- poj 1679 The Unique MST(判断最小生成树是否唯一)
- POJ 1679 The Unique MST (判断最小生成树是否唯一)
- poj-1679 The Unique MST 判断最小生成树是否唯一
- poj 1679 The Unique MST (判断最小生成树是否唯一)
- poj 1679 The Unique MST (判断最小生成树是否唯一)
- POJ 题目1679The Unique MST(判断最小生成树是否是唯一的)
- POJ 1679 The Unique MST(判断最小生成树是否唯一)
- POJ 1679 The Unique MST 判断最小生成树是否唯一
- POJ 1679 The Unique MST( 判断最小生成树是否唯一)
- POJ 1679 The Unique MST(判断最小生成树是否唯一)
- POJ 1679 The Unique MST(判断最小生成树是否唯一)
- poj 1679 The Unique MST 判断最小生成树是否唯一 解题报告
- POJ 1679 The Unique MST 判断最小生成树是否唯一
- ViewPager中呈现前一页和后一页的内容
- SqlServer触发器:同时删除多条数据,备份多条数据
- python常用的转义字符
- 管理后台-后端-Node.js篇
- return 和exit的区别
- POJ 1679 The Unique MST(判断最小生成树是否唯一)
- 如何将editplus设置为不自动备份我的文件
- tomcat配置单向/双向https认证
- 网站缓存数据到tomcat服务器
- my leetcode#1 #2 #3 #4 #6 #7 #8
- Android下setLatestEventInfo警告、Handler警告、SimpleDateFormat警告
- 一张图了解Git
- 都是血淋淋的经验啊!(Python)
- java.toString() ,(String),String.valueOf的区别