摘要: 问题描述如下:“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? 城镇数码N,道路数目M;简单的畅通工程,只要套模板就OK 。不过要理解哦。。。(若有N个集合,则最少只需N-1条道路就可以连起来)#include"stdio.h"int set[1024];int find(int i){ return set[i]==i?set[i]:find(set[i]); }void merge(int x,int y){ int a=find(x),b=find(y); set[a]=b; 阅读全文
posted @ 2011-08-05 22:27 bcy 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6540Accepted Submission(s): 2719Problem Description大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了!做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样。话虽这样说,我还是要告诉大家,要想失败到一定程度也是不容易的。比如,我高中的时候,就有一个神奇的女生,在英语. 阅读全文
posted @ 2011-08-05 21:46 bcy 阅读(133) 评论(0) 推荐(0) 编辑
摘要: #include"iostream"using namespace std;int c1[250010],c2[250010];int value[55];int amount[55];int main(){ int nNum; while(scanf("%d",&nNum)&&nNum>0) { memset(value,0,sizeof(value)); memset(amount,0,sizeof(amount)); int sum=0; for(int i=1;i<=nNum;++i) { scanf(&quo 阅读全文
posted @ 2011-08-05 12:10 bcy 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 输入1分,2分,5分的硬币,输出不能组成的最小总值;#include"iostream"using namespace std;int c1[10000],c2[10000];int num[4];int main(){ int nNum; while(scanf("%d %d %d",&num[1],&num[2],&num[3])&&(num[1]||num[2]||num[3])) { int _max=num[1]*1+num[2]*2+num[3]*5; for(int i=0;i<=_max;++ 阅读全文
posted @ 2011-08-05 10:50 bcy 阅读(216) 评论(0) 推荐(0) 编辑