博客
关于我
POJ-1679-The Unique MST(判断最小生成树是否唯一)
阅读量:244 次
发布时间:2019-03-01

本文共 1442 字,大约阅读时间需要 4 分钟。

题意:给定n(<=100)个点,m条带权边。问最小生成树MST是否唯一。

题解:

判断依据——如果在选一个点加进来的时候,有两条及以上的路径可以选择,那么这个最小生成树就就是不唯一的。

图片说明:

AC代码:

ps(思路很简单,具体操作的时候注意一下)

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define int long long#define pb push_back#define dbg(x) cout << #x << ">>>" << x << endl;#define mst(a, x) memset(a, x, sizeof(a))using namespace std;const int maxn = 1e2 + 10;int n, m, u, v, w;int g[maxn][maxn];int vis[maxn], d[maxn];int ans, cnt[maxn];bool Unique_MST_prim() { bool f = true; for (int i = 1; i <= n; i++) vis[i] = cnt[i] = 0, d[i] = 9e18; //初始化 for (int i = 1; i <= n; i++) { int t = -1; for (int j = 1; j <= n; j++) { if (vis[j] == 0 && (t == -1 || d[j] < d[t])) t = j; } vis[t] = 1; //标记 if (cnt[t] > 1) f = false; //有多个选择到达点t if (i > 1) ans += d[t]; //第一个点不加,i==1是d[t]=1e9 for (int j = 1; j <= n; j++) { if (vis[j] || g[t][j] == 9e18) continue; if (d[j] == g[t][j]) cnt[j]++; if (d[j] > g[t][j]) d[j] = g[t][j], cnt[j] = 1; //恢复为只有一条路径到达点j } } return f;}void init() { for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) g[i][j] = 9e18; for (int i = 1; i <= n; i++) g[i][i] = 0;}signed main() { int T; cin >> T; while (T--) { cin >> n >> m; init(); for (int i = 1; i <= m; i++) { cin >> u >> v >> w; g[u][v] = g[v][u] = w; } ans = 0; if (!Unique_MST_prim()) cout << "Not Unique!" << endl; else cout << ans << endl; } return 0;}

 

转载地址:http://kwpt.baihongyu.com/

你可能感兴趣的文章
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
MYSQL sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
mysql union orderby 无效
查看>>
mysql v$session_Oracle 进程查看v$session
查看>>
mysql where中如何判断不为空
查看>>
MySQL Workbench 使用手册:从入门到精通
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>
MySQL —— 在CentOS9下安装MySQL
查看>>
MySQL —— 视图
查看>>
mysql 不区分大小写
查看>>
mysql 两列互转
查看>>