uva 10397 Connect the Campus 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 算法变形

相关文章:

你感兴趣的文章:

标签云: