uva 10397 Connect the Campus kruskal 演算法變形

來源:互聯網
上載者:User

標籤:最小產生樹   kruskal   

#include <cstdio>#include <iostream>#include <algorithm>#include <queue>#include <stack>#include <cstdlib>#include <cmath>#include <set>#include <map>#include <vector>#include <cstring>#define INF 100000000using namespace std;int n,m;int x[1005];int y[1005];int fa[1005];struct node{int x,y,w;bool operator < (const node& a)const{return w > a.w;}};int fun(int x){return fa[x] == x ? x : fa[x] = fun(fa[x]);}int main(){while(cin >> n){for(int i = 1;i <= n;i++){scanf("%d%d",&x[i],&y[i]);}priority_queue<node> que;for(int i = 1;i <= n;i++){for(int j = 1;j <= n;j++){if(i == j) continue;node a;a.x = i;a.y = j;a.w = (x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]);que.push(a);}}for(int i = 1;i <= n;i++){fa[i] = i;}int m;cin >> m;for(int i = 0;i < m;i++){int a,b;scanf("%d%d",&a,&b);fa[fun(a)] = fun(b);}double ret = 0;while(!que.empty()){node a = que.top();que.pop(); if(fun(a.x) != fun(a.y)){ret += sqrt(a.w); fa[fun(a.x)] = fun(a.y); }}printf("%.2f\n",ret);}return 0;}

uva 10397 Connect the Campus kruskal 演算法變形

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.