[kuangbin带你飞]专题八 生成树 A
来源:互联网 发布:cool edit pro mac 编辑:程序博客网 时间:2024/05/21 10:25
题目地址:https://vjudge.net/contest/67265#problem/A
思路:次小生成树
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;const int maxn = 105;int n,m;int ans;int g[maxn][maxn];bool vis[maxn];bool used[maxn][maxn];int Max[maxn][maxn];int low[maxn];int pre[maxn];int prime(){ int ans=0; memset(vis,false,sizeof(vis)); memset(Max,0,sizeof(Max)); memset(used,false,sizeof(used)); vis[1]=true; pre[1]=-1; for(int i=2;i<=n;i++) { pre[i]=1; low[i]=g[i][1]; } low[1]=0; for(int i=1;i<n;i++) { int minc=INF; int p=-1; for(int j=1;j<=n;j++) { if(!vis[j] && minc>low[j]) { minc=low[j]; p=j; } } if(minc==INF) return -1; ans+=minc; vis[p]=true; used[p][pre[p]]=used[pre[p]][p]=true; for(int j=1;j<=n;j++) { if(vis[j]) Max[j][p]=Max[p][j]=max(Max[j][pre[p]],low[p]); if(!vis[j] && low[j]>g[j][p]) { low[j]=g[j][p]; pre[j]=p; } } } return ans;}int smst(){ int Min=INF; for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) if(g[i][j]!=INF && !used[i][j]) { Min=min(Min,ans+g[i][j]-Max[i][j]); } if(Min==INF)return -1;//不存在 return Min;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) { if(i!=j) g[i][j]=INF; else g[i][j]=0; } for(int i = 0;i < m;i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); g[u][v]=g[v][u]=w; } ans=prime(); if(ans==-1) { printf("Not Unique!\n"); continue; } if(ans==smst())printf("Not Unique!\n"); else printf("%d\n",ans); }}
0 0
- [kuangbin带你飞]专题八 生成树 A
- kuangbin带你飞 专题八 生成树
- [kuangbin带你飞]专题八 生成树 B
- [kuangbin带你飞]专题八 生成树 C
- [kuangbin带你飞]专题八 生成树 D
- [kuangbin带你飞]专题八 生成树 E
- [kuangbin带你飞]专题八 生成树 F
- [kuangbin带你飞]专题八 生成树 G
- [kuangbin带你飞]专题八 生成树 H
- [kuangbin带你飞]专题八 生成树 I
- [kuangbin带你飞]专题六 最小生成树A
- poj 1679 The Unique MST ([kuangbin带你飞]专题八 生成树 )
- [kuangbin带你飞]专题17:A
- POJ 2031 Building a Space Station(kuangbin带你飞 专题六:最小生成树)
- [kuangbin带你飞]专题六 最小生成树 A POJ 1251
- 【 题集 】 【kuangbin带你飞】专题六 最小生成树
- [kuangbin带你飞]专题六 最小生成树
- [kuangbin带你飞]专题六 最小生成树 H
- C++/C学习好书汇总
- The Suspects
- NavigationBar颜色、字体颜色设置、状态栏设置白色
- 在屏幕上用"*"输出菱形图案
- 从砸壳后的ipa中获取头文件信息
- [kuangbin带你飞]专题八 生成树 A
- (3)-openfire-MyEclipse插件开发环境搭建
- 票据宝
- 密码发生器
- 大话设计模式-----(九)桥接模式、命令模式
- 带你吃透RTMP
- 类模板中的友元声明
- 深入理解Java的接口和抽象类
- c# DataTable转List 和 List转 DataTable