uva 10369 最小生成树
2017-09-24 16:52
459 查看
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int pre[1000]; double x[1000],y[1000]; double dis(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } struct node{ int u,v; double w; }e[1000010]; bool cmp(const node &a,const node &b){ return a.w<b.w; } int find(int x){ return x==pre[x]?x:find(pre[x]); } int main(){ int T,cnt,s,p; scanf("%d",&T); while(T--){ cnt=0; scanf("%d%d",&s,&p); for(int i=0;i<p;i++) scanf("%lf%lf",&x[i],&y[i]); for(int i=0;i<p;i++){ for(int j=i+1;j<p;j++){ e[cnt].u=i; e[cnt].v=j; e[cnt++].w=dis(x[i],y[i],x[j],y[j]); } } for(int i=0;i<=p;i++) pre[i]=i; sort(e,e+cnt,cmp); int ans=0,res; for(int i=0;i<cnt;i++){ int t1=find(e[i].u),t2=find(e[i].v); if(t1!=t2){ pre[t1]=t2; ans++; res=i; if(ans==p-s) break; } } printf("%.2f\n",e[res].w); } }
相关文章推荐
- uva 10369(最小生成树)
- uva 10369 Arctic Network 最小生成树上的第k条边
- UVa 10369 - Arctic Network(求最小生成树的第k小边)
- UVa 10369 - Arctic Network(求最小生成树的第k大边)
- poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)
- uva 10369 - Arctic Network(最小生成树)
- UVa - 10369 - Arctic Network ( 最小生成树 Kruscal )
- 2349 poj &&uva 10369 Arctic Network【最小生成树】
- UVA 10369- Arctic Network(最小生成树)
- UVA-10369 Arctic Network (最小生成树)
- UVA 10369 Arctic Network【最小生成树】
- Uva 10369 Arctic Network 最小生成树
- UVA 10369 - Arctic NetWork (求最小生成树)
- uva 10369 - Arctic Network(最小生成树)
- UVA 10369 - Arctic NetWork (求最小生成树)
- uva10369 Arctic Network( 最小生成树)
- UVA - 10369 Arctic Network (最小生成树)
- 【UVA 10369】 Arctic Network (最小生成树)
- (intermediate) 最小生成树 UVA 10369 - Arctic Network
- UVa 10369 Arctic Network (Kruskal+最小生成树的第K小边)