博客
关于我
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 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>