noj 1081 组织集体活动
来源:互联网 发布:js 设置控件不可用 编辑:程序博客网 时间:2024/04/30 10:11
组织集体活动
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 319 测试通过 : 70
比赛描述
成功的组织一次集体活动基本要求是所有人都参加,从实践来看,说服所有人需要花费较多的时间。幸运的是,研究发现,在一个集体中,两个人之间花费一定的时间进行单独交流,会同意参加集体活动。现在已知集体中两两之间对参加集体活动达成一致时需要花费的时间t,由于组织集体活动有时间限制,当t大于24小时,我们认为这两人在有限时间不能达成一致,数据不作记录。现在我们采用两两说服的方式来组织这次集体活动,请你根据统计数据,判断能否让所有人都参加,如果能,输出累计花费的最少时间(所有的两两交流所花费时间的累加和)
输入
第一行是一个正整数:测试用例数目,最多为100。之后,每个测试用例包括多行:
l 第1行给出一个整数(空格分割),表示集体人数n,2≤n≤200
l 第2行给出两个整数(空格分割),第一个整数表示对某项决定达成一致时间不大于24小时的两人组数目m,第三个整数表示集体活动最初的倡议者k,0≤m≤20100,0≤k≤n-1,集体中每个人用序号表示。
l m行,每行三个整数(空格分割),前两个整数表示两个人,第三个整数表示上述两个人同意参加集体活动需要花费的时间t,0≤n<24。
输出
对于每个测试用例:
l 不能让所有人都参加则输出“Impossible”,否则输出累计花费的最少时间
注意:输出部分的结尾要求包含一个多余的空行。
样例输入
2
2
1 0
0 1 2
3
1 0
0 1 2
样例输出
2
Impossible
题目来源
算法与数据结构设计2009
题目链接:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1081
解题思路:裸的最小生成树,我是用克鲁斯卡尔来写。不多解释了。。。
代码如下:
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=20200;int fa[205];struct node{ int x,y,z;}nd[maxn];int cmp(node a,node b){ return a.z<b.z;}void get_fa(){ for(int i=0;i<205;i++) fa[i]=i;}int find(int x){ return x==fa[x]?x:fa[x]=find(fa[x]);}void Union(int a,int b){ int aa=find(a); int bb=find(b); if(aa!=bb) fa[aa]=bb;}int main(void){ int t,n,m,k; scanf("%d",&t); while(t--) { int num=0,ans=0; get_fa(); memset(nd,0,sizeof(nd)); scanf("%d%d%d",&n,&m,&k); for(int i=0;i<m;i++) scanf("%d%d%d",&nd[i].x,&nd[i].y,&nd[i].z); bool p=true; sort(nd,nd+m,cmp); for(int i=0;i<m;i++) { if(find(nd[i].x)!=find(nd[i].y)) { Union(nd[i].x,nd[i].y); ans+=nd[i].z; } } for(int i=1;i<n;i++) { if(find(i)!=find(0)) { p=false; break; } } if(p) printf("%d\n",ans); else printf("Impossible\n"); }}
- noj 1081 组织集体活动
- 南邮 OJ 1081 组织集体活动
- 组织集体活动
- 组织集体活动
- NOJ1081组织集体活动——全连通判断+最小生成树
- 公司集体活动
- 非常郁闷的一次集体活动!
- ERP项目组首次集体活动记
- 第一次ThoughtWorks欧亚工作室的集体活动
- 记公司同事的一次集体活动
- 组织一些活动其实不简单
- Noj
- QC活动组织和年度安排(稿)
- 组织QClub大连站活动的感受
- 组织打羽毛球活动的一些心得
- 鼓励“鼓捣”的活动和组织
- 磁疗是真的吗?磁场对血液、细胞及集体组织的作用
- 一步一步教你组织网站的线下活动
- String、StringBuffer与StringBuilder之间区别
- 好气,action死活取不到input中的值
- .Net中访问数据库学习笔记
- Linux常用命令大全
- Github 搭建 hexo (五)- 站点地图(sitemap.xml)
- noj 1081 组织集体活动
- 二叉树转换成双向链表
- 欢迎使用CSDN-markdown编辑器
- HDU 1087 —— Super Jumping! Jumping! Jumping!
- SDWebImage内部实现过程
- handler机制的原理
- Android Wear 进阶 5 - Creating Watch Faces 创建手表的界面(表盘)
- 文件编辑
- Java编程思想初学