hdu 2122 Ice_cream’s world III
2013-11-15 10:18
323 查看
注意考虑只有一个城市的情况!!!还有题目有点问题,应该是接下来一共m行。
用Kruskal写的。
用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
- HDU 2122 Ice_cream’s world III(最小生成树Kruskal)
- HDU - 2122 Ice_cream’s world III(Kruskal)
- HDU 2122 Ice_cream’s world III
- [MST]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
- 最小生成树 Prim 算法HDU 2122 Ice_cream’s world III
- (HDU - 2122)Ice_cream’s world III
- HDU_2122_Ice_cream’sWorldIII
- HDU2122--Ice_cream’s world III--最小生成树--kruskal
- HDU 2122 Ice_cream’s world III
- hdu 2122 Ice_cream’s world III 最小生成树prim
- HDU 2122 Ice_cream’s world III(最小生成树)
- hdu 2122 Ice_cream’s world III
- hdu 2122 Ice_cream’s world III
- Ice_cream’s world III hdu 2122 最小生成树