摘要: 题意:给出一些点,有值,给出一些边,然后求去掉一条边后将分成连通的两部分,且两部分的差值最小分析:首先,求出所有的双连通分量,缩点,重新构图,再dfs (类似树形DP的过程)一遍就可以找出最小差值。但是,因为tarjan 算法的本质就是一个dfs,所有可以在求双连通分量的同时求出最小差值。注意:有重边的情况,因为人为的加了一条双向边,那个是无效的,但是原图的重边是有效的, 在这里WA 了N次View Code #include<iostream>#include<algorithm>#include<vector>#include<stack># 阅读全文
posted @ 2012-02-25 14:02 枕边梦 阅读(356) 评论(0) 推荐(0) 编辑
摘要: hdu1827#include<iostream>#include<algorithm>#include<stack>#include<vector>#define MAXN 1010 using namespace std; vector<int> g[MAXN],g2[MAXN]; stack<int> st; int n,w[MAXN],dfn[MAXN],low[MAXN],f[MAXN],index; int in[MAXN],num,sccw[MAXN]; bool vis[MAXN],instack[MAXN 阅读全文
posted @ 2012-02-25 00:01 枕边梦 阅读(881) 评论(0) 推荐(0) 编辑