UVA 11228 - Transportation system.
2013-03-30 09:54
302 查看
MST,一条边长度大于t那么就连着两个州,州的数量等于 长度大于t的边的数量+1
#include <iostream> #include <cmath> #include <cstdio> #include <vector> #include <algorithm> #include <memory.h> using namespace std; struct edge { int u,v; double w; edge(int uu=0,int vv=0,double ww=0):u(uu),v(vv),w(ww){} }; vector<edge> ev; int id[1001]; int size[1001]; int n,scnt; double tv; bool cmp(const edge & ce1,const edge &ce2){ return ce1.w<ce2.w; } void init(){ ev.clear(); for (int i=0;i<n;++i) { id[i]=i; size[i]=1; } } int find(int p){ return p==id[p]?p:id[p]=find(id[p]); } bool uni(int p,int q){ int pp=find(p),pq=find(q); if(pp==pq)return false; if(size[pp]>size[pq]){ id[pq]=pp; size[pp]+=size[pq]; }else{ id[pp]=pq; size[pq]+=size[pp]; } return true; } pair<int,int> kruskcal(){ sort(ev.begin(),ev.end(),cmp); int i=0,j=0; double rSum=0,raSum=0; for (;i<ev.size()&&j<n-1;++i) { if(uni(ev[i].u,ev[i].v)){ if(ev[i].w>tv){ raSum+=ev[i].w;//只要一条边的长度大于t那么这个条边连着2个州 scnt++; }else{ rSum+=ev[i].w; } ++j; } } scnt++;//最后把州的个数+1,因为州的数量等于边长度大于t的数量加1 rSum=(int)(rSum+0.5); raSum=(int)(raSum+0.5); return pair<int,int>(rSum,raSum); } int main(){ int t,i,cas=1; cin>>t; while (t--) { cin>>n>>tv; init(); vector<pair<int,int> >pv; for (i=0;i<n;++i) { int x,y; scanf("%d %d",&x,&y); pv.push_back(pair<int,int>(x,y)); } scnt=0; for (i=0;i<pv.size();++i) { for (int j=i+1;j<pv.size();++j) { ev.push_back(edge(i,j,sqrt((pv[j].first-pv[i].first)*(pv[j].first-pv[i].first)+(pv[j].second-pv[i].second)*(pv[j].second-pv[i].second)))); } } pair<int,int> r=kruskcal(); cout<<"Case #"<<cas++<<": "<<scnt<<' '<<r.first<<' '<<r.second<<endl; } return 0; }
相关文章推荐
- uva11400 lighting system design
- UVa - 11400 - Lighting System Design
- Lighting System Design - UVa 11400 dp
- UVa11400 Lighting System Design
- UVa - 11400 - Lighting System Design(线性动态规划)
- UVa 11228 Transpartation System ( kruskal)
- HDU 4940 Destroy Transportation system(上下界网络流)
- uva 301 Transportation 铁路公司的阳谋 纯dfs暴力
- UVA-11078 Open Credit System
- 【HDU 4940】Destroy Transportation system(无源无汇带上下界可行流)
- UVA 11078 - Open Credit System
- uva:310 - L--system(字符串处理+ bfs)
- UVA11651 Krypton Number System【矩阵快速幂】
- HDU 4940 Destroy Transportation system 无源汇有上下界的网络流
- UVa - 11400 - Lighting System Design
- UVA 11078 Open Credit System(空间优化+时间优化)
- UVa - 11400 - Lighting System Design
- UVA 11078 Open Credit System .
- HDU 4940 Destroy Transportation system(图论)
- Open Credit System UVA 11078