hdu2121 Ice_cream's world II
给一个有向图,求最小树形图,并输出根节点
\(n\leq10^3,\ m\leq10^4\)
最小树形图
对于求无根最小树形图,可以建一个虚拟节点,连向其他所有节点,权值为 \(\inf\) ,最后的答案即为 \(ans-\inf\) 。无解当且仅当 \(ans>\inf\times2\)
至于求根节点,可以考虑记下前驱为虚拟节点的节点,但由于节点编号不断改变,因此只需记下连接两个节点的边即可。
时间复杂度 \(O(nm)\)
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010, inf = 2e6;
int n, m, tmp, val[maxn], tid[maxn], pre[maxn], vis[maxn];
struct edges {
int u, v, w;
} e[maxn * 11];
void edmonds() {
int ans = 0, pos;
while (1) {
memset(tid, 0, sizeof tid);
memset(vis, 0, sizeof vis);
for (int i = 1; i < n; i++) {
val[i] = 1 << 30;
}
for (int i = 1; i <= m; i++) {
int u = e[i].u, v = e[i].v;
if (u != v && e[i].w < val[v]) {
val[v] = e[i].w, pre[v] = u;
if (u == n) pos = i;
}
}
for (int i = 1; i < n; i++) {
if (val[i] > 1e9) {
puts("impossible\n"); return;
}
}
int tot = 0;
for (int i = 1; i < n; i++) {
int u = i;
ans += val[i];
while (u != n && !tid[u] && vis[u] != i) {
vis[u] = i, u = pre[u];
}
if (u != n && !tid[u]) {
tid[u] = ++tot;
for (int v = pre[u]; u != v; v = pre[v]) {
tid[v] = tot;
}
}
}
if (!tot) break;
for (int i = 1; i <= n; i++) {
if (!tid[i]) tid[i] = ++tot;
}
for (int i = 1; i <= m; i++) {
int u = e[i].u, v = e[i].v;
e[i].u = tid[u], e[i].v = tid[v];
if (u != v) e[i].w -= val[v];
}
n = tot;
}
ans -= inf;
if (ans > inf) {
puts("impossible\n");
} else {
printf("%d %d\n\n", ans, pos - m + tmp - 1);
}
}
int main() {
while (~scanf("%d %d", &n, &m)) {
for (int i = 1; i <= m; i++) {
scanf("%d %d %d", &e[i].u, &e[i].v, &e[i].w);
e[i].u++, e[i].v++;
}
for (int i = 1; i <= n; i++) {
e[m + i].u = n + 1, e[m + i].v = i, e[m + i].w = inf;
}
m += (tmp = n), n++;
edmonds();
}
return 0;
}
hdu2121 Ice_cream's world II的更多相关文章
- HDU2121 Ice_cream’s world II —— 最小树形图 + 不定根 + 超级点
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2121 Ice_cream’s world II Time Limit: 3000/1000 MS (J ...
- hdu2121 - Ice_cream’s world II(朱刘算法,不固定根)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2121 题目意思大概是要你在一些城市中选一个做首都 , 要求首都都能到其他城市 , 道路花费要最少 , ...
- hdu2121 Ice_cream’s world II 最小树形图(难)
这题比HDU4009要难一些.做了4009,大概知道了最小树形图的解法.拿到这题,最直接的想法是暴力.n个点试过去,每个都拿来做一次根.最后WA了,估计是超时了.(很多题都是TLE说成WA,用了G++ ...
- HDU2121 Ice_cream’s world II (最小树形图)
在建图的时候对原图进行加边 建立一个超级源点~ #include<cstdio> #include<algorithm> #include<cstring> usi ...
- HDU2121:Ice_cream’s world II (虚根+有向图最小生成树)
Ice_cream’s world II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU 2121 Ice_cream’s world II 不定根最小树形图
题目链接: 题目 Ice_cream's world II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- hdoj 2121 Ice_cream’s world II 【没有最低树的根节点】
称号:pid=2121" target="_blank">hdoj 2121 Ice_cream's world II 题意:题目是一道躶题,给n个点,m条边的有向 ...
- HDU 2121 Ice_cream’s world II 最小树形图 模板
开始学习最小树形图,模板题. Ice_cream’s world II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32 ...
- Ice_cream’s world II(最小树形图,加虚点)
Ice_cream’s world II http://acm.hdu.edu.cn/showproblem.php?pid=2121 Time Limit: 3000/1000 MS (Java/O ...
随机推荐
- Django下配置静态文件以及渲染图片
js,css,img等都叫做静态文件,那么关于django中静态文件的配置,我们就需要在setting配置文件里面写上下面这些内容: #STATIC_URL = '/xxx/' #别名,随便写的名字, ...
- 小tips:HTML DOM中的children和childNodes属性
childNodes 属性 标准的,childNodes 属性返回节点的子节点集合,以 NodeList 对象.包括HTML节点,所有属性,文本.可以通过nodeType来判断是哪种类型的节点,只有当 ...
- 如何用JavaScript判断dom是否有存在某class的值?
例如: <html class="no-js"> <head> </head> <body> </body> </ ...
- HTML DOM classList 属性
页面DOM里的每个节点上都有一个classList对象,程序员可以使用里面的方法新增.删除.修改节点上的CSS类.使用classList,程序员还可以用它来判断某个节点是否被赋予了某个CSS类. 添加 ...
- 一个JVM进程启动后里面有几个线程
在写Java程序时,通常我们管只有一个main函数(而没有别的Thread或Runnable的程序)叫单线程程序.但是我们写的这个所谓的单线程程序只是JVM这个程序中的一个线程,JVM本身是一个多线程 ...
- Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件
文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件 by:授客 QQ:1033553122 测试环境: Python版本:Python 3.3.2 Win7 64 代码实践 # ...
- JMeter 监听器之保存响应到文件
监听器之保存响应到文件 by:授客 QQ:1033553122 测试环境 apache-jmeter-2.13 1. 保存结果到响应文件 说明: 文件名称前缀:设置响应文件所在路径(路径必须已存在 ...
- Linux CentOS7下安装Python3及其setuptools、pip
CentOS 7系统自带Python2.7,我们尽量别去卸载它!!否则会出问题,比如yum无法使用等问题. 假若,在安装Python3时没有自动安装setuptools和pip,那么,如何在CentO ...
- [20180928]ora-01426(补充).txt
[20180928]ora-01426(补充).txt --//链接:http://www.itpub.net/thread-2105458-1-1.html--//做一点点必要的补充: 1.环境:S ...
- SQL Server 2016新特性: 对JSON的支持
SQL Server 2005开始支持XML数据类型,提供原生的XML数据类型.XML索引及各种管理或输出XML格式的函数.随着JSON的流行,SQL Server2016开始支持JSON数据类 ...