hdu 2122 Ice_cream’s world III
2013-08-09 15:31
281 查看
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=2122
注意考虑只有一个城市的情况!!!还有题目有点问题,应该是接下来一共m行~~~
赤果果的最小生成树,用Kruskal。
源代码:
http://acm.hdu.edu.cn/showproblem.php?pid=2122
注意考虑只有一个城市的情况!!!还有题目有点问题,应该是接下来一共m行~~~
赤果果的最小生成树,用Kruskal。
源代码:
#include <iostream> #include<stdio.h> #include<algorithm> using namespace std; typedef struct{ int from,to,c; }road; road r[10000010]; int fa[1010]; int count; int cmp(const void *a,const void *b){ return (((road *)a)->c > ((road *)b)->c)?1:-1; } int find(int a ) { return fa[a]==a?a:fa[a]=find(fa[a]); } int main() { int ans,n,m,i,j; while( scanf("%d %d",&n,&m)!=EOF){ int sum=0; int ok=0; ans=0; for(i=0;i<n;i++) fa[i]=i; for(i=0;i<m;i++){ int temp_1,temp_2,c; scanf("%d %d %d",&temp_1,&temp_2,&c); r[sum].from=temp_1; r[sum].to=temp_2; r[sum++].c=c; r[sum].from=temp_2; r[sum].to=temp_1; r[sum++].c=c; } qsort(r,sum,sizeof(road),cmp); if(n==1)ok=1; //只有一个城市 else for(i=0;i<sum;i++){ int fa1=find(r[i].from); int fa2=find(r[i].to); if(fa1!=fa2){ fa[fa2]=fa1; n--; ans+=r[i].c; if(n==1){ ok=1; break;} } } if(ok==1) printf("%d\n\n",ans); else printf("impossible\n\n"); } return 0; }
相关文章推荐
- HDU 2122 Ice_cream’s world III(最小生成树)
- hdu 2122 Ice_cream’s world III
- Ice_cream’s world III hdu 2122 最小生成树
- HDU 2122 Ice_cream’s world III 【最小生成树】
- hdu 2122 Ice_cream’s world III(最小生成树)
- hdu 2122 Ice_cream’s world III
- hdu 2122(Ice_cream’s world III)(最小生成树,两种算法都可以)
- HDU 2122 Ice_cream’s world III 两种最小生成树算法
- 文章标题 HDU 2122: Ice_cream’s world III (最小生成树+kruskal)
- HDU 2122 Ice_cream’s world III【最小生成树】
- hdu 2122 Ice_cream’s world III(最小生成树))
- hdu 2122 Ice_cream’s world III
- HDU 2122 Ice_cream’s world III(最小生成树Kruskal)
- [MST]hdu 2122 Ice_cream’s world III
- HDU 2122 Ice_cream’s world III
- HDU - 2122 Ice_cream’s world III(Kruskal)
- HDU 2122 Ice_cream’s world III
- hdu 2122 Ice_cream’s world III
- hdu 2122 Ice_cream’s world III(最小生成树)
- hdu 2122:Ice_cream’s world III