Uva 11183 Teen Girl Squad(最小树形图 模板)
2015-02-16 20:20
232 查看
没看题目,推算样例....觉得是,然后就套模板写了。因为题目是从0-n-1,但是模板是起始点是1...所以我吧所有点的编号都加1了...
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<iostream> using namespace std; #define inf 1<<30 struct node { int u,v; double w; }edge[60000]; int pre[2000],id[2000],use[2000]; int in[2000]; int mini_tree(int root,int n,int m) { double ans=0; int i,u; while(1) { for(i=1;i<=n;i++) in[i]=inf; for(i=1;i<=m;i++) { int u=edge[i].u; int v=edge[i].v; if(edge[i].w<in[v]&&u!=v) { in[v]=edge[i].w; pre[v]=u; } } for(i=1;i<=n;i++) { if(i==root)continue; ans+=in[i]; if(in[i]==inf) return -1; } memset(id,-1,sizeof(id)); memset(use,-1,sizeof(use)); int cnt=0; for(i=1;i<=n;i++) { int v=i; while(v!=root&&use[v]!=i&&id[v]==-1) { use[v]=i; v=pre[v]; } if(v!=root&&id[v]==-1) { ++cnt; id[v]=cnt; for(u=pre[v];u!=v;u=pre[u]) id[u]=cnt; } } if(cnt==0) break; for(i=1;i<=n;i++) if(id[i]==-1) id[i]=++cnt; for(i=1;i<=m;i++) { int u=edge[i].u; int v=edge[i].v; edge[i].u=id[u]; edge[i].v=id[v]; if(edge[i].u!=edge[i].v) edge[i].w-=in[v]; } n=cnt; root=id[root]; } return ans; } int main() { int T; cin>>T; for(int cas=1;cas<=T;cas++) { int n,m; cin>>n>>m; int u,v,w; for(int i=1;i<=m;i++) { scanf("%d %d %d",&u,&v,&w); edge[i].u=u+1; edge[i].v=v+1; edge[i].w=w; } int ans=mini_tree(1,n,m); printf("Case #%d: ",cas); if(ans<0) printf("Possums!\n"); else printf("%d\n",ans); } return 0; }
相关文章推荐
- UVA-11183- Teen Girl Squad(最小树形图模板)
- UVA - 11183 Teen Girl Squad(最小树形图)
- UVA-11183 Teen Girl Squad (最小树形图、朱刘算法模板)
- UVA 11183 Teen Girl Squad(最小树形图裸题)
- UVA 11183 Teen Girl Squad(最小树形图)
- UVA11183 Teen Girl Squad (最小树形图)
- uva11183 Teen Girl Squad(最小树形图)
- kuangbin专题八 UVA11183 Teen Girl Squad(最小树形图)
- UVA 11183 - Teen Girl Squad(最小树形图)
- UVA 11183 Teen Girl Squad(最小树形图)
- UVa11183 - Teen Girl Squad(最小树形图-裸)
- UVa11183 - Teen Girl Squad(最小树形图-裸)
- uva11183 Teen Girl Squad(最小树形图朱刘算法)
- uva11183 Teen Girl Squad(最小树形图)
- UVa11183 Teen Girl Squad, 最小树形图,朱刘算法
- uva 11183 Teen Girl Squad (最小树形图)
- 【UVa】11183 Teen Girl Squad 最小树形图
- UVA 11183 Teen Girl Squad 最小树形图
- Teen Girl Squad - UVA 11183 - 最小树形图
- POJ 3164Command Network && UVA 11183 Teen Girl Squad 最小树形图