博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4738 Caocao's Bridges(2013杭州网络赛丶神坑)
阅读量:7233 次
发布时间:2019-06-29

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

就是求最小权值的桥。。不过有好几个坑。。。

1:原图不连通,ans=0.

2: m<=n^2 显然有重边,重边必然不是桥,处理重边直接add(u, v, INF).

3:   最小桥边权为0的时候,ans=1,至少要派一个人运炸弹。。。

 

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int N = 1111;const int INF = 100000000;int n, m;int pre[N], low[N], dfs_clock;int bccno[N], vis[N], wi[N][N], g[N][N];struct Edge{ //flag = 1 ->bridge int from, to, w, flag;};vector
G[N];vector
edges;//add bidir edgevoid addedge(int u, int v, int w){ edges.push_back((Edge){u, v, w, 0}); edges.push_back((Edge){v, u, w, 0}); int nima = edges.size(); G[u].push_back(nima-2); G[v].push_back(nima-1);}int dfs(int u, int fa){ int lowu = pre[u] = ++dfs_clock; int sz = G[u].size(); for(int i=0; i
pre[u]) edges[G[u][i]].flag = 1, edges[G[u][i]^1].flag = 1; } else if(pre[v] < pre[u] && v != fa) lowu = min(lowu, pre[v]); } return low[u] = lowu;}void dfs1(int u){ vis[u] = 1; int sz = G[u].size(); for(int i=0; i
1) addedge(i, j, INF); } //BU LIANTONG memset(vis, 0, sizeof(vis)); dfs1(0); bool flag = 0; for(int i=0; i
1 } return 0;}

 

 

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

你可能感兴趣的文章
Ansible系列(七):执行过程分析、异步模式和速度优化
查看>>
正则表达式matcher.group用法
查看>>
TCP/IP(三)数据链路层~2
查看>>
使用Json让Java和C#沟通的方法
查看>>
小米路由Mini刷Breed, 潘多拉和LEDE
查看>>
tornado日志使用详解
查看>>
[Flume][Kafka]Flume 与 Kakfa结合例子(Kakfa 作为flume 的sink 输出到 Kafka topic)
查看>>
键盘游戏之canvas--用OO方式写
查看>>
Leetcode: Scramble String
查看>>
JavaWeb--中文乱码小结
查看>>
MySQL优化经验和方法汇总
查看>>
JAVA获取CLASSPATH路径--转
查看>>
Linux 下测试网卡性能命令iperf 的用法
查看>>
工作总结 datatable 里的 数据 rows Columns
查看>>
正则表达式的优先级
查看>>
利用mvn进行多环境配置
查看>>
JMS发布/订阅消息传送例子
查看>>
Oracle 基础系列之1.2 oracle的基本使用
查看>>
POJ 1149 PIGS (最大流)
查看>>
fitnesse - 一个简单的例子(slim)
查看>>