神坑题。这题的坑点有1.判断连通,2.有重边,3.至少要有一个人背炸药

因为有重边,tarjan的时候不能用子结点和父节点来判断是不是树边的二次访问,所以我的采用用前向星存边编号的奇偶性关系,用^1来判断是不是树边

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxe = 1000005<<1;
const int maxv = 1005;
int clock;
int dfn[maxv],low[maxv],ecnt;
int head[maxv],nxt[maxe],to[maxe],wei[maxe]; void init()
{
clock = ecnt = 0;
memset(head,-1,sizeof(head));
memset(dfn,0,sizeof(dfn));
} void addEdge(int u,int v,int w)
{
to[ecnt] = v;
wei[ecnt] = w;
nxt[ecnt] = head[u];
head[u] = ecnt++;
} int ans; void tarjan(int u,int fa)
{
dfn[u] = low[u] = ++clock;
for(int i = head[u]; ~i ; i = nxt[i]){
int v = to[i];
if(i == (fa^1)) continue;
if(!dfn[v]){
tarjan(v,i);
low[u] = min(low[u],low[v]);
if(low[v] > dfn[u]){
ans = min(ans,wei[i]);
}
}else {
low[u] = min(low[u],dfn[v]);
}
}
} int sum;
bool vis[maxv];
void dfs(int u){
if(vis[u]) return;
sum++;
vis[u] = 1;
for(int i = head[u]; ~i ; i = nxt[i]){
dfs(to[i]);
}
}
const int INF = 1e9;
int main()
{
int N,M;
while(~scanf("%d%d",&N,&M)&&N){
init();
for(int i = 0; i < M; i++){
int U,V,W;
scanf("%d%d%d",&U,&V,&W);
addEdge(U,V,W);
addEdge(V,U,W);
}
memset(vis,0,sizeof(vis));
sum = 0;
dfs(1);
if(sum < N) { printf("0\n"); continue; }
ans = INF;
tarjan(1,-1);
if(ans == INF) { printf("-1\n"); continue; }
ans = max(ans,1);
printf("%d\n",ans);
}
return 0;
}

HDU 4738 Caocao's Bridges taijan (求割边,神坑)的更多相关文章

  1. HDU 4738——Caocao's Bridges——————【求割边/桥的最小权值】

     Caocao's Bridges Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  2. hdu 4738 Caocao's Bridges (tarjan求桥)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意:给一些点,用一些边把这些点相连,每一条边上有一个权值.现在要你破坏任意一个边(要付出相 ...

  3. 2013杭州网赛 1001 hdu 4738 Caocao's Bridges(双连通分量割边/桥)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥 ...

  4. Hdu 4738 Caocao's Bridges (连通图+桥)

    题目链接: Hdu 4738 Caocao's Bridges 题目描述: 有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...

  5. HDU 4738 Caocao's Bridges(Tarjan求桥+重边判断)

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. HDU 4738 Caocao's Bridges (2013杭州网络赛1001题,连通图,求桥)

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. hdu 4738 Caocao's Bridges 图--桥的判断模板

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. HDU——4738 Caocao's Bridges

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. HDU 4738 Caocao's Bridges

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

随机推荐

  1. eclipse里的Maven插件安装

    插件安装 打开Eclipse的Help->Install New Software,如下图所示: 2. 选择“Add..”按钮,又会弹出如下对话框: 这个对话框就是用于添加一个插件地址的.在“N ...

  2. go 时间戳和时间格式的相互转换

    package main import( "fmt" "time" ) func main() { datetime := "2015-01-01 0 ...

  3. 运行Spark程序的几种模式

    一. local 模式 -- 所有程序都运行在一个JVM中,主要用于开发时测试    无需开启任何服务,可直接运行 ./bin/run-example 或 ./bin/spark-submit 如:  ...

  4. 解决windows下nginx中文文件名乱码

    我的根目录文件夹放在d盘work文件夹下,一般这样配置 nginx\conf\nginx.conf location / { root D:/work; index index_bak.html; a ...

  5. css3椭圆运动

    通过使用css3实现让元素椭圆运动.而不是圆形运动. 效果1:http://sandbox.runjs.cn/show/ignefell 效果2:http://runjs.cn/code/w2wxjy ...

  6. Uva11134

    #include<bits/stdc++.h> #define inf 0x3f3f3f3f ; using namespace std; int n; struct rook{ int ...

  7. centos下svnadmin的部署过程

    1.    安装SVN #yum –y install subversion 2.    安装openjdk #yum –y list java* #yum –y install java-1.8.0 ...

  8. 071 Simplify Path 简化路径

    给定一个文档 (Unix-style) 的完全路径,请进行路径简化.例如,path = "/home/", => "/home"path = " ...

  9. SSIS 抽取excel出错:所请求的 OLE DB 访问接口 Microsoft.ACE.OLEDB.12.0 尚未注册

    如果是安装的office2010就要装这个,如果是2007就不用装! http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b ...

  10. IntelJ IDEA创建简单Java工程

    1.  打开IDEA J 2017开发工具,如下图: 2.点击“Create New Project”,将打开以下图: 3.选择 “Java”,选择“Next”,打开下图: 4.“Create pro ...