hdu 4738 Caocao's Bridges (找桥,有重边)
来源:互联网 发布:java初级程序员面试 编辑:程序博客网 时间:2024/06/10 20:51
题意:
给出一个图,现在只能切除一个路使得整个图不联,每条路都有保安(w个),要切除这条路需要至少需要人力w人。问图要使得整个图不连通需要的最少人力。
题解:
这题有一个坑点,就是如果路上没有保安的情况,这种情况也是需要有人去切除路的,所以至少1人。这题有重边。。。
#include<iostream>#include<math.h>#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>#include<queue>#include<map>#include<set>using namespace std;#define B(x) (1<<(x))typedef long long ll;void cmax(int& a,int b){ if(b>a)a=b; }void cmin(int& a,int b){ if(b<a)a=b; }const int oo=0x3f3f3f3f;const int MOD=1000000007;const int maxn=1100;const int maxm=2100000;struct EDGE{ int v,next,w;}E[maxm];int head[maxn],tol;int low[maxn],dfn[maxn];int g_cnt;int ans;void Init(){ memset(head,-1,sizeof head); tol=0; memset(low,0,sizeof low); memset(dfn,0,sizeof dfn); g_cnt=0; ans=oo;}void add_edge(int u,int v,int w){ E[tol].w=w; E[tol].v=v; E[tol].next=head[u]; head[u]=tol++;}void Tarjan(int u,int pre){ dfn[u]=low[u]=++g_cnt; int v; for(int i=head[u];i!=-1;i=E[i].next){ if(i==(pre^1))continue; v=E[i].v; if(!dfn[v]){ Tarjan(v,i); if(low[v]<low[u]) low[u]=low[v]; if(low[v]>dfn[u]) cmin(ans,E[i].w); }else if(dfn[v]<low[u]) low[u]=dfn[v]; }}int main(){ //freopen("E:\\read.txt","r",stdin); int n,m,u,v,w; while(scanf("%d %d",&n,&m)!=EOF){ if(n==0&&m==0)break; Init(); for(int i=1;i<=m;i++){ scanf("%d %d %d",&u,&v,&w); add_edge(u,v,w); add_edge(v,u,w); } int cnt=0; for(int i=1;i<=n;i++) if(!dfn[i]){ cnt++; Tarjan(i,-1); } if(cnt>1) ans=0; else if(ans==oo) ans=-1; else if(ans==0) ans=1; printf("%d\n",ans); } return 0;}/*3 31 2 72 3 43 1 43 21 2 72 3 00 0*/
0 0
- hdu 4738 Caocao's Bridges (找桥,有重边)
- HDU - 4738 Caocao's Bridges(桥)
- hdu 4738 Caocao's Bridges
- hdu 4738 Caocao's Bridges
- hdu 4738 Caocao's Bridges
- HDU:4738 Caocao's Bridges
- HDU 4738 Caocao's Bridges
- HDU 4738 Caocao's Bridges
- hdu 4738 - Caocao's Bridges
- hdu 4738 Caocao's Bridges
- HDU-4738Caocao's Bridges
- HDU 4738 Caocao's Bridges(找无向图的桥 双联通)
- HDU Caocao's Bridges
- Caocao's Bridges HDU
- HDU 4738 Caocao's Bridges 有重边的无向图求桥
- hdu 4738 Caocao's Bridges -有重边的无向图找桥
- hdu 4738 Caocao's Bridges(求割边和桥)
- hdu 4738 Caocao's Bridges (割边/桥)
- 如何在QT中用cmake和qmake编译PCL程序
- Android如何使用API文档
- 求最大公约数
- JAVA 第一次作业 统计代码文件行数【空行+注释行+代码行】
- 写了一个小东西: 修改指定文件夹下所有文件为不可识别文件,可还原!
- hdu 4738 Caocao's Bridges (找桥,有重边)
- Camera震屏效果
- 黑马程序员——Java概述
- Hadoop2伪分布式安装
- 基于arm7芯片lpc2138的十六进制转换10进制显示程序
- 正交矩阵、相似矩阵与二次型的转化
- Memcached的分布式结构和并发机制
- Windows 路径操作 API
- hdu 1232 畅通工程