poj1679The Unique MST(次小生成树模板)
2024-08-30 00:22:42
次小生成树模板,别忘了判定不存在最小生成树的情况
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn = + ;
const int inf = 0x3f3f3f3f;
int MAX[maxn][maxn], mp[maxn][maxn], dis[maxn], pre[maxn];
int t, n, m;
bool vis[maxn], used[maxn][maxn];
inline int min( int a,int b ){
return a<b ? a:b;
} inline int max( int a, int b ){
return a>b ? a:b;
} inline int prim(){
int res = ;
memset( vis, , sizeof(vis) );
memset( used, , sizeof(used) );
memset( MAX, , sizeof(MAX) );
for( int i=; i<=n; i++ ){
pre[i] = ;
dis[i] = mp[i][];
}
vis[] = ;
dis[] = pre[] = ;
for( int i=; i<n; i++ ){
int minid, MIN = inf;
for( int j=; j<=n; j++ ) if( !vis[j] && MIN>dis[j] ) MIN = dis[minid=j];
if( MIN==inf ) return -; //不存在最小生成树
res += MIN;
vis[minid] = ;
used[minid][pre[minid]] = used[pre[minid]][minid] = ;
for( int j=; j<=n; j++ ){
if( vis[j] ) MAX[minid][j] = MAX[j][minid] = max( dis[minid], MAX[j][pre[minid]] );
if( !vis[j] && dis[j]>mp[minid][j] ){
pre[j] = minid;
dis[j] = mp[minid][j];
}
}
}
return res;
} int main(){
scanf("%d", &t);
while( t-- ){
scanf("%d%d", &n, &m);
memset( mp, inf, sizeof(mp) );
for( int i=; i<m; i++ ){
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
mp[u][v] = mp[v][u] = w;
}
int min_ans = prim(), ans = inf;
if( min_ans==- ){ printf("Not Unique!\n"); continue; } //不存在最小生成树
for( int i=; i<=n; i++ )
for( int j=i+; j<=n; j++ )
if( mp[i][j]!=inf && !used[i][j] )
ans = min( ans, min_ans+mp[i][j]-MAX[i][j] );
if( ans==min_ans ) printf("Not Unique!\n");
else printf("%d\n", min_ans);
} return ;
}
最新文章
- [Python] from scipy import sparse 报 DLL load failed:找不到指定模块错误
- JavaScript(四) Window窗体操作
- [转]看懂UML类图
- 平时一些mysql小技巧及常识
- php emoji处理微信表情
- web server &;&; web framework角色区分
- MySQL双机热备份
- 大数据下Limit使用(MySQL)
- 【wikioi】1108 方块游戏(模拟)
- python os模块sys模块常用方法
- Android布局管理器(线性布局)
- TreeView无刷新获取text及value
- Thinkphp excel导入导出
- Power Strings(kmp妙解)
- TestNg它@Factory详细解释------如何更改参数值测试
- 关于解决mysql数据库乱码的问题
- freemarker基本数据类型
- (三十三)Xcode项目的重要工程文件
- 使用XStream是实现XML与Java对象的转换(2)--别名
- EasyUI之DataGird动态组合列
热门文章
- 【LOJ3099】[SNOI2019]积木(搜索)
- GitHub: Oracle RAC Database on Docker 未测试 改天试试
- 解决netty客户端接收报文不完整的情况
- (谷歌浏览器)前端以FormData类形成表单(含文件),通过ajax提交,PHP后端$_POST数组为空
- Entity framework Core 数据库迁移
- js获取对象的属性个数
- Kubernetes Storage Persistent Volumes
- Tensorflow在python3.7版本的运行
- Git下载安装及设置详细教程
- python day 18: thinking in UML与FTP作业重写