POJ3436 Command Network [最小树形图]
POJ3436 Command Network
最小树形图裸题
傻逼poj回我青春
wa wa wa 的原因竟然是需要%.2f而不是.2lf
我还有英语作业音乐作业写不完了啊啊啊啊啊啊啊啊啊
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
#define fir first
#define sec second
using namespace std;
const int N = 1005, M = 1e6+5, inf = 1e9+7;
int n, m, x[N], y[N];
struct edge {
int u, v;
double w;
} e[M];
inline double dis(int u, int v) {
return sqrt((x[u]-x[v])*(x[u]-x[v]) + (y[u]-y[v])*(y[u]-y[v]));
}
pair<double, int> fa[N];
int vis[N], id[N];
double zhu_liu(int root = 1) {
double ans = 0;
while(true) {
for(int i=1; i<=n; i++) fa[i] = make_pair(inf, 0);
for(int i=1; i<=m; i++) {
int u = e[i].u, v = e[i].v;
fa[v] = min(fa[v], make_pair(e[i].w, u));
}
for(int i=1; i<=n; i++) if(i != root && !fa[i].sec) {
return -1;
}
fa[root] = make_pair(0, 0);
memset(vis, 0, sizeof(vis));
memset(id, 0, sizeof(id));
int num = 0;
for(int i=1; i<=n; i++) if(i != root) {
ans += fa[i].fir;
int u = i;
while(u != root && !vis[u]) vis[u] = i, u = fa[u].sec;
if(u != root && vis[u] == i) {
num++;
while(id[u] != num) id[u] = num, u = fa[u].sec;
}
}
if(!num) break;
for(int i=1; i<=n; i++) if(!id[i]) id[i] = ++num;
int cnt = 0;
for(int i=1; i<=m; i++) {
int u = e[i].u, v = e[i].v;
double tmp = fa[v].fir;
u = id[u];
v = id[v];
if(u == v) continue;
e[++cnt] = (edge) {u, v, e[i].w - tmp};
}
n = num;
m = cnt;
root = id[root];
}
return ans;
}
int main() {
//ios::sync_with_stdio(false); cin.tie(); cout.tie();
while(cin >> n >> m) {
for(int i=1; i<=n; i++) scanf("%d %d", &x[i], &y[i]);
int cnt = 0;
for(int i=1; i<=m; i++) {
int u, v;
scanf("%d %d", &u, &v);
if(u == v) continue;
e[++cnt] = (edge) {u, v, dis(u, v)};
}
m = cnt;
double ans = zhu_liu();
if(ans == -1) puts("poor snoopy");
else printf("%.2f\n", ans);
}
}
POJ3436 Command Network [最小树形图]的更多相关文章
- POJ 3164 Command Network 最小树形图
题目链接: 题目 Command Network Time Limit: 1000MS Memory Limit: 131072K 问题描述 After a long lasting war on w ...
- POJ3164 Command Network —— 最小树形图
题目链接:https://vjudge.net/problem/POJ-3164 Command Network Time Limit: 1000MS Memory Limit: 131072K ...
- POJ3164 Command Network(最小树形图)
图论填个小坑.以前就一直在想,无向图有最小生成树,那么有向图是不是也有最小生成树呢,想不到还真的有,叫做最小树形图,网上的介绍有很多,感觉下面这个博客介绍的靠谱点: http://www.cnblog ...
- POJ 3164 Command Network 最小树形图模板
最小树形图求的是有向图的最小生成树,跟无向图求最小生成树有很大的区别. 步骤大致如下: 1.求除了根节点以外每个节点的最小入边,记录前驱 2.判断除了根节点,是否每个节点都有入边,如果存在没有入边的点 ...
- POJ 3164 Command Network 最小树形图 朱刘算法
=============== 分割线之下摘自Sasuke_SCUT的blog============= 最 小树形图,就是给有向带权图中指定一个特殊的点root,求一棵以root为根的有向生成树T, ...
- POJ - 3164-Command Network 最小树形图——朱刘算法
POJ - 3164 题意: 一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图. 题目就是求这个最小的树形图. 参考资料:https://blog.csdn.net/ ...
- POJ 3164 Command Network ( 最小树形图 朱刘算法)
题目链接 Description After a long lasting war on words, a war on arms finally breaks out between littlek ...
- POJ 3164——Command Network——————【最小树形图、固定根】
Command Network Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 15080 Accepted: 4331 ...
- POJ 3164 Command Network (最小树形图)
[题目链接]http://poj.org/problem?id=3164 [解题思路]百度百科:最小树形图 ]里面有详细的解释,而Notonlysucess有精简的模板,下文有对其模板的一点解释,前提 ...
随机推荐
- JGUI源码:prefixfree 这个库有时候会引起网页一直加载中(10)
如题,大部分情况下正常,但是chrome频繁刷新时,会出现这个问题,控制台没有异常信息.最终放弃使用引用第三方库prefixfree.min.js
- Python的安装及小程序练习
Python 1.Python的安装教程 (1)进入Python官网 (2)双击Python-3.6.4.exe安装程序,勾选Add Python 3.6 to PATH (3)选择自定义安装. (4 ...
- shell 脚本实现定时备份mysql数据库
首先要知道直接在脚本中输入mysql的密码是不被允许的,但是我们可以曲线救国 1. 在新建一个文件专门用来存储用户密码 如: vim ./.mysql.conf [mysqldump] user=yo ...
- 推荐.Net、C# 逆向反编译四大工具利器
转自:https://blog.csdn.net/kongwei521/article/details/54927689 在项目开发过程中,估计也有人和我遇到过同样的经历:运行环境出现了重大Bug亟需 ...
- Arduino语言简介
参考链接:https://www.cnblogs.com/xczr/p/7831343.html
- nb-iot简介【转】
转自:http://www.elecfans.com/tags/nb-iot/ 标签 > nb-iot nb-iot 关注 118人关注 提供NB-IoT技术特点,NB-IoT模块/芯片,NB- ...
- mac 安装和使用MongoDB
安装 尝试一:手动命令安装尝试二:采用Homebrew尝试三:下载安装包使用安装尝试一:手动命令安装按照官网https://docs.mongodb.com/manual/tutorial/insta ...
- java--序列化和反序列化
一.序列化 java序列化的过程是把对象转换为字节序列的过程 序列化的两种用途: 1)把对象的字节序列永久保存大搜硬盘上,通常存放到一个文件中 2)在网络上传送对象的字节序列 jdk中的序列化API: ...
- ajax上传文件显示进度
下面要做一个ajax上传文件显示进度的操作,文末有演示地址 这里先上代码: 1.前端代码 upload.html <!DOCTYPE html> <html lang="e ...
- Cardinality
Cardinality: 优化器在计算成本的时候,需要从统计信息中取得数据,然后去估计每一步操作所涉及的行数,叫做Cardinality. 比如,一张表T有1000行数据,列COL1上没有直方图,没有 ...