poj1679(判断最小生成树是否唯一)
题意:给出n个点,m条边,要你判断最小生成树是否唯一。
思路:先做一次最小生成树操作,标记选择了的边,然后枚举已经被标记了的边,判断剩下的边组成的最小生成树是否与前面的相等,相等,则不唯一,否则唯一......
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- struct node
- {
- int v1,v2;
- int dis;
- int flg;
- } s[10000];
- int cmp(const node a,const node b)
- {
- if(a.dis<b.dis)
- return 1;
- else
- return 0;
- }
- int father[200],n;
- int kruskal(int num,int m)
- {
- int ans=0,cnt=1;
- for(int i=0; i<m; i++)
- {
- if(i==num)
- continue;
- int s1=father[s[i].v1];
- int s2=father[s[i].v2];
- if(s1!=s2)
- {
- ans+=s[i].dis;
- //s[i].flg=1;
- cnt++;
- father[s2]=s1;
- for(int j=0; j<=n; j++)
- if(father[j]==s2)
- father[j]=s1;
- }
- }
- if(cnt!=n) return -1;
- else return ans;
- }
- int main()
- {
- int text;
- scanf("%d",&text);
- while(text--)
- {
- int m;
- int ans=0;
- scanf("%d%d",&n,&m);
- for(int i=0; i<=n; i++)
- father[i]=i;
- for(int i=0; i<m; i++)
- {
- scanf("%d%d%d",&s[i].v1,&s[i].v2,&s[i].dis);
- s[i].flg=0;
- }
- sort(s,s+m,cmp);
- int cnt=1;
- for(int i=0; i<m; i++)
- {
- int s1=father[s[i].v1];
- int s2=father[s[i].v2];
- if(s1!=s2)
- {
- ans+=s[i].dis;
- s[i].flg=1;
- cnt++;
- father[s2]=s1;
- for(int j=0; j<=n; j++)
- if(father[j]==s2)
- father[j]=s1;
- }
- }
- int w=0;
- for(int i=0; i<m; i++)
- {
- if(s[i].flg==0)
- continue;
- int sum=0;
- for(int j=0;j<=n;j++)
- father[j]=j;
- sum=kruskal(i,m);
- //printf("sum==%d\n",sum);
- if(sum==ans)
- {
- w=1;
- break;
- }
- }
- if(w==1)
- printf("Not Unique!\n");
- else
- printf("%d\n",ans);
- }
- return 0;
- }
poj1679(判断最小生成树是否唯一)的更多相关文章
- POJ-1679 The Unique MST(次小生成树、判断最小生成树是否唯一)
http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its minimum s ...
- POJ 1679 The Unique MST(判断最小生成树是否唯一)
题目链接: http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its min ...
- POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)
题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...
- POJ 1679 The Unique MST 【判断最小生成树是否唯一】
Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Defini ...
- poj 1679 The Unique MST 判断最小生成树是否唯一(图论)
借用的是Kruskal的并查集,算法中的一点添加和改动. 通过判定其中有多少条可选的边,然后跟最小生成树所需边做比较,可选的边多于所选边,那么肯定方案不唯一. 如果不知道这个最小生成树的算法,还是先去 ...
- POJ1679判断最小生成树的唯一性
题意: 判断最小树是否唯一. 思路: 我用了两种方法,主要就是好久没敲了,找个水题练练手,第一种就是先一遍最小生成树,然后枚举最小生成树上的每一条边,然后取消这条边,在跑一遍最小生 ...
- poj 1679 判断最小生成树是否唯一
/* 只需判断等效边和必选边的个数和n-1的关系即可 */ #include<stdio.h> #include<stdlib.h> #define N 110 struct ...
- POJ-1679 The Unique MST---判断最小生成树是否唯一
题目链接: https://vjudge.net/problem/POJ-1679 题目大意: 给定一个无向连通网,判断最小生成树是否唯一. 思路: (1)对图中的每条边,扫描其他边,如果存在相同权值 ...
- poj1679(最小生成树)
传送门:The Unique MST 题意:判断最小生成树是否唯一. 分析:先求出原图的最小生成树,然后枚举删掉最小生成树的边,重做kruskal,看新的值和原值是否一样,一样的话最小生成树不唯一. ...
随机推荐
- “医疗信息化行业之中的联发科”- 我们在医疗行业中的定位及目标 想做一个面对中小企业的专业上游软件供应商 台湾联发科技颠覆掉的是一个封闭的手机产业系统 解决方案,即AgileHIS.NET数字化医院基础方案
“医疗信息化行业之中的联发科”- 我们在医疗行业中的定位及目标 我们做中国医疗信息化行业之中的联发科 ---我们在医疗行业中的定位及目标 从我个人来讲,我从2001年到现在这10年之间基本上一直在 ...
- 【JQuery】jQuery(document).ready(function($) { });的几种表示方法及load和ready的区别
jQuery中处理加载时机的几种方式 第一种: jQuery(document).ready(function() { alert("你好"); }); //或 $(documen ...
- 【javascript】javascript中function(){},function(){}(),new function(){},new Function()
和java比起来,javascript真的是松散的无以复加,不过这也让我们在无聊之余,有精力去探讨一些复杂的应用,从而在开发之路上,获得一些新的想法. javascript中的类的构造 javascr ...
- PreparedStatement的用法及优点
jdbc(java database connectivity,java数据库连接)的api中的主要的四个类之一的java.sql.statement要求开发者付出大量的时间和精力.在使用statem ...
- AndroidStudio编译错误:Error: null value in entry: blameLogFolder=null
今天写项目的时候,电脑开了个WiFi热点,然后这个热点和window驱动不兼容,有时候会导致电脑重启,重启之后AndroidStudio编译就报错了, Error: null value in ent ...
- SharePoint 2013 Farm 安装指南——构建一个双层SharePoint Farm
最近要对公司里的SharePoint进行升级,由于旧的系统SharePoint 2010已经有2年了,上面改动比较多,而且权限也很混乱了,所以下定决心要对其做一次升级,重新部署一台新的SharePoi ...
- mac 利用 sshpass 自动登录
mac 利用 sshpass + 配置文件 实现自动登录 使用方式 https://github.com/vipzhicheng/go 参见此项目 其实原理也就是 脚本 读取配置文件 匹配 参数或 ...
- 稀疏傅里叶变换(sparse FFT)
作者:桂. 时间:2018-01-06 14:00:25 链接:http://www.cnblogs.com/xingshansi/p/8214122.html 前言 对于数字接收来讲,射频域随着带 ...
- 在Windows系统上怎么使用SecureCRT链接Linux AWS EC2 -摘自网络
在Windows系统上就需要使用SecureCRT,Putty等工具,进行连接.但是AWS提供的XXX.pem文件,需要做一些处理SecureCRT的方法: 1.使用XXX.pem文件生成一个公钥文件 ...
- 给现有MVC项目增加Web API支持
在MVC4中自带了Web API不再需要从Nuget中下载. Step1:增加System.Web.Http,System.Web.Http.WebHost,System.Net.Http三个程序集的 ...