博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Aizu 2224 Save your cats
阅读量:2125 次
发布时间:2019-04-30

本文共 2501 字,大约阅读时间需要 8 分钟。

题意

猫被困在围栏里,问最少去掉多长的边,使所有猫逃出来。

问题转化为将N个图转化为树,因为树不会成环,树加上一条边就可以成环

AC

  • 并查集 + prim
    对于每个图,求它的最大生成树,总长度减去所有的最大生成树就是需要去掉的边
using namespace std;int inf = 0x3f3f3f3f;int n, m, pre[N];double sum;bool vis[N];double dis[N];struct ac{    int v;    double c;};vector

a(N);vector

g[N];void init() { for (int i = 1; i
MAX) { MAX = dis[j]; u = j; } } if (u == -1) return; vis[u] = true; sum += MAX; for (int j = 0; j < g[u].size(); ++j) { ac t = g[u][j]; if (vis[t.v]) continue; if (dis[t.v] < t.c ) { dis[t.v] = t.c; } } }}int main(){// #ifndef ONLINE_JUDGE// freopen("in.txt", "r", stdin);// #endif ios::sync_with_stdio(false); while (cin >> n >> m) { init(); for (int i = 1; i <= n; ++i) { cin >> a[i].first >> a[i].second; } double ans = 0; for (int i = 0; i < m; ++i) { int u, v; cin >> u >> v; int dx = a[u].first - a[v].first; int dy = a[u].second - a[v].second; double temp = sqrt(dx * dx + dy * dy); ans += temp; // 建图 g[u].push_back((ac){v, temp}); g[v].push_back((ac){u, temp}); join(u, v); } for (int i = 1; i <= n; ++i) { // 求这个并查集的最大生成树 if (pre[i] == i) { sum = 0; prim(i); ans -= sum; } } printf("%.3lf\n",ans); for (int i = 1; i <= n; ++i) { g[i].clear(); } } return 0;}

  • 贪心
    对所有边降序排列,如果两个边不连通,就减去这条边,剩下的就是需要去掉的边
using namespace std;int inf = 0x3f3f3f3f;int n, m, pre[N];struct ac{    int u, v;    double c;    bool operator < (const ac &x)const {        return c > x.c;    }};vector

a(N);vector

g;void init() { for (int i = 1; i
> n >> m) { init(); for (int i = 1; i <= n; ++i) { cin >> a[i].first >> a[i].second; } double ans = 0; for (int i = 0; i < m; ++i) { int u, v; cin >> u >> v; int dx = a[u].first - a[v].first; int dy = a[u].second - a[v].second; double temp = sqrt(dx * dx + dy * dy); ans += temp; g.push_back((ac){u, v, temp}); } sort(g.begin(), g.end()); ans -= rm(); printf("%.3lf\n",ans); g.clear(); } return 0;}

转载地址:http://ckprf.baihongyu.com/

你可能感兴趣的文章
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
iOS常用宏定义
查看>>
什么是ActiveRecord
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>
关于“团队建设”的反思
查看>>
利用jekyll在github中搭建博客
查看>>
Windows7中IIS简单安装与配置(详细图解)
查看>>