题目1012:畅通工程(浙大)
来源:互联网 发布:课时统计软件app 编辑:程序博客网 时间:2024/04/29 00:59
最近在准备保研的机试题,从最开始什么都不会,到现在可以写出来一些简单的题,这也算一个成长嘛,本科期间除了上课,做了几个项目,没怎么接触算法的东西。如果有大一二的学妹学弟,如果有机会一定要参加参加ACM我觉得真的百利而无一害。我其实写了挺多题了,只是都是写在自己的印象笔记里,感觉还是可以写个博客集合。直接看下面的题吧。
九度http://ac.jobdu.com/problem.php?pid=1012
牛客
https://www.nowcoder.com/practice/4878e6c6a24e443aac5211d194cf3913tpId=63&tqId=29573&tPage=1&ru=%2Fkaoyan%2Fretest%2F9001&qru=%2Fta%2Fzju-kaoyan%2Fquestion-ranking
解题:http://blog.csdn.net/thudaliangrx/article/details/49182821
思路:
典型的最小生成树问题。通常有两种方法,Prim算法和Kruskal算法。
两种方法分别更适合于稠密图和稀疏图,个人比较喜欢用后一种方法,通常在算法实现上需结合并查集。
两种算法介绍可参考博客:
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html
我的代码:#include<iostream>#include<set>using namespace std;//int a[1001][1001];int b[1001];int main(){ int n,m; set<int> se; while(cin>>n>>m && n!=0){ for(int j=1;j<=n;j++){ b[j]=0; } int from,to; for(int i=0;i<m;i++){ cin>>from>>to; if(b[from]== 0 && b[to]==0){ b[from]=b[to]=from; }else if(b[from] ==0 && b[to]!=0){ b[from]=b[to]; }else if(b[from] !=0 && b[to]==0) { b[to]=b[from]; }else if(b[from] !=0 && b[to]!=0 && b[from]!=b[to]){ int te=b[to]; for(int i=1;i<=n;i++) if(b[i] == te) b[i]=b[from]; } } int count=0; //int i; for( int i=1;i<=n;i++){ if(b[i] != 0) se.insert(b[i]); else count++; // cout<<b[i]<<" "; } //cout<<endl; cout<<se.size()+count-1<<endl; se.clear(); } return 0;}解题答案:#include <stdio.h> #define M 1000 int count = 0; int id[M+1]; void UF(int n) { for (int i=1; i<=n; i++) id[i] = i; } int find(int i) { return id[i]; } void combine(int i, int j, int n) { int a = find(i); int b = find(j); if (a == b) return ; for (int k=1; k<=n; k++) { if (id[k] == a) id[k] = b; } count--; } int main(void) { int m, n; int a, b; int i; while (scanf("%d", &n) != EOF && n) { scanf("%d", &m); count = n; UF(n); for (i=0; i<m; i++) { scanf("%d%d", &a, &b); combine(a, b, n); } printf("%d\n", count-1); } return 0; }
阅读全文
0 0
- 题目1012:畅通工程(浙大)
- 题目1012:畅通工程
- 题目1012:畅通工程
- 题目1012:畅通工程
- 题目1012:畅通工程
- 题目1012:畅通工程
- 题目1012:畅通工程
- 题目1012:畅通工程
- 题目1012:畅通工程
- 2007浙大复试上机考试题目5--畅通工程
- Jobdu 题目1012:畅通工程
- 66-题目1012:畅通工程
- 浙大05机试 畅通工程
- (题目66)题目1012:畅通工程
- 题目1012:畅通工程(并查集的应用)
- 九度考研真题 浙大 2005-3浙大1012:畅通工程
- 题目1012:畅通工程(并查集)
- 【九度】题目1012:畅通工程
- 贪吃蛇(js小游戏)
- 2017.05.27【提高组】模拟赛B组
- 浏览器加载网络图片
- 关于jQuery的小项目
- 人民币冠字号码识别
- 题目1012:畅通工程(浙大)
- |BZOJ 1649|二维背包|[Usaco2006 Dec]Cow Roller Coaster
- request中getParameter和getAttribute的区别
- gridview绑定linqdatasource后获取gridview中的字段
- Windows 10 关闭系统自动更新
- MySQL+DRBD+heartbeat高可用方案
- 第三节 JDBC批处理文件(一)
- [bzoj1295]: [SCOI2009]最长距离
- JavaScript小功能