`
pleasetojava
  • 浏览: 705409 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ACM唯一的最小生成树C++实现

 
阅读更多

ACM唯一的最小生成树
Description
求一个非负权边的无向连通图的最小生成树,如果这个无向图存在两个或两个以上的最小生成树,就输出Not Unique,否则输出最小生成树的边的权值和。

输入:
第一行是一个整数K,表示有多少个测试用例,以后每个测试用例占m+1行。每个测试用例的第一行为两个整数n,m(3<=n<=100),表示图的顶点数和边数,从第二行开始每行为三个整数i,j,w,表示从i到j顶点的权值。

输出:
每行输出一个测试用例的结果。如果这个无向图存在两个或两个以上的最小生成树,就输出Not Unique,否则输出最小生成树的边的权值和。

Sample Input
2
3 3
1 2 1
2 3 2
3 1 3
4 4
1 2 2
2 3 2
3 4 2
4 1 2

Sample Output
3
Not Unique

#include<iostream>
using namespace std;
int a[110][110],b[110];
bool mark[110],flag;
int cases,n,m,i,j,k,minn,minsum,pre,next,x,y,z;
int main()
{
scanf("%d",&cases);
while(cases--)
{
memset(mark,false,sizeof(mark));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
minsum=0;flag=false;
mark[1]=true;b[1]=1;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&z); a[x][y]=z;a[y][x]=z; }
for(k=2;k<=n;k++){
minn=9999999;
for(i=1;i<=k;i++){
for(j=1;j<=n;j++){
if(!mark[j]) {
if(a[b[i]][j]<minn&&a[b[i]][j]!=0) { minn=a[b[i]][j]; next=j; pre=b[i]; }
}
}
}
b[k]=next;
for(i=1;i<=k;i++)
{
if(b[i]==pre) continue;
if(a[b[i]][next]==minn) { flag=true; break; }
}
if(flag) break;
mark[next]=true;
minsum+=minn;
}
if(flag) printf("Not Unique\n"); else printf("%d\n",minsum);
}
return 0;
}

分享到:
评论

相关推荐

    acm prim最小生成树算法利用最小堆实现

    c++描述的数据结构算法中的prim最小生成树的算法,利用最小堆来实现时间复杂度为O(elog2e)大家多多支持哦!!!

    最小生成树(二维数组实现)

    用二维数组实现的最小生成树(比用图实现简单),数据结构课设做的ACM习题中的使总代价最小的通讯网。编译过的c++文件!

    无向连通图最小生成树

    请输出无向连通图最小生成树权重之和。 输入 第一行是2个整数,分别表示顶点个数n和边数m。接下来的m行中,每一行第一个整数表示边的开始顶点,第二个表示边的结束顶点,第三个表示这条边的权重。 ( 测试数据中保证图...

    图论算法库 C++ 语言实现.zip_C++图论_C++图论的库_c++ 图论库_starfish_图论最优路径

    最小生成树 Prim 算法 每对节点间最短路径 Flod-Warshall 算法 语言 C++ 编译平台 VisualAge C++ 4.0 作者 starfish (starfish.h@china.com) 备注 程序用C++语言编写,在VisualAge C++ 4.0下调试通过。压缩包内...

    ACM算法集锦(实现代码)

    ACM算法集锦(实现代码),包括kurXX最小生成树、Prim、堆实现最短路、最短路DIJ普通版、floyd、拓扑排序、BELL_MAN、DFS强连通分支、最大匹配、最大权匹配,KM算法、两种欧拉路、求最小割集合的办法 【最小费用最大流...

    ACM巨全模板 .pdf

    14.最小树形图(有向最小生成树) 15.并查集 (普通并查集,带权并查集,) 16.求两个节点的最近公共祖先 (LCA) 17.限制顶点度数的MST(k度限制生成树) 18.多源最短路(spfa,floyd) 19.最短路 (输出字典序最小) 20.最长路 ...

    acm国家集训队2004年论文合集

    吴景岳:《最小生成树算法及其应用》 朱晨光:《优化,再优化!——从《鹰蛋》一题浅析对动态规划算法的优化》 杨思雨:《伸展树的基本操作与应用》 贝小辉:《浅析树的划分问题》 鬲融:《浅谈特殊穷举思想的应用》...

    图论算法实现

    将我在ACM比赛中自己写的一些图论算法打包上传到CSDN中,这些图论算法包括:最短路、最小生成树、网络流、二分图匹配、连通分量...

    如何学习ACM,看后受益匪浅

    图论之所以运用最多是因为它的变化最多,而且可以轻易地结合基本数据结构和许多算法的基本思想,较多用到的知识包括连通性判断、DFS和BFS,关节点和关键路径、欧拉回路、最小生成树、最短路径、二部图匹配和网络流...

    acm-template:acm-icpc的一些模板

    度数限制的最小生成树 最小直径生成树 最优比率生成树 最小环 k短路 网络流 最大流 Dinic SAP 最小费用最大流(spfa增广,zkw费用流) spfa 增广 zkw费用流 上下界最大流 上下界最小费用最大流 无源无汇可行流 无源无...

    coding-challenges:https上的ACM挑战

    编码挑战 我的代码记录在很棒的网站下面! 绝对值得尝试!!! ACM挑战 ACM在挑战(对于城大学生,请先尝试后再... 最小生成树(高级-&gt;最大流量) AI游戏 挑战 使用语言:Python 话题 Minimax(negamax)算法 升码 挑战

    高效算法:竞赛、应试与提高必修128例.[法] Christoph Dürr Jill-Jênn Vie(带书签文字版).pdf

    10 4 最小权重生成树:Kruskal 算法 140 第 11 章 集合 142 11 1 背包问题 142 11 2 找零问题 143 11 3 给定总和值的子集 145 11 4 k 个整数之和 146 第 12 章 点和多边形 148 12 1 凸包问题 149 12 2 多边形的测量 ...

    IOI国家集训队论文集1999-2019

    + [最小生成树](#最小生成树) + [二分图](#二分图) + [Voronoi图](#voronoi图) + [偶图](#偶图) * [树](#树) + [树](#树-1) + [路径问题](#路径问题) + [最近公共祖先](#最近公共祖先) + [划分问题](#划分...

    几个重要的c程序源码.rar

    2012-06-11 16:03 0 1.txt 2012-06-11 15:20 42,528 c#仿QQ好友界面.rar 2012-06-11 15:22 216,281 ChineseChessV1.rar ...2012-06-11 15:38 299,008 (HDUACM2010版_06)并查集(最小生成树).ppt

Global site tag (gtag.js) - Google Analytics