摘要:
强连通分量——tarjin 算法这道题和前面那道hdu 2767唯一不同就是,2767需要找出最小数量的边使图成为连通分量,而这个题需要一点点贪心的思想在里面,它需要求出代价最小的边使图成为连通分量;代码: 1 #include 2 #include 3 #include 4 #include 5 #define N 50006 6 using namespace std; 7 8 struct Edge 9 {10 int u, val, next;11 Edge() {}12 Edge(int a, int b, int c)13 {14 ... 阅读全文
摘要:
强连通分量——tarjin算法;这题的思路就是找出多少个出度为0的连通分量,结果就是这些连通分量的元素的最小值相加;一道很简单的题,改了我好久,= =!~贴代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define maxn 1005 7 using namespace std; 8 9 int dfn[maxn],low[maxn],pen[maxn],b[maxn];10 int nncount,ans,cc[maxn],cnt,in[maxn];11 bool instack[maxn];12 vectorv. 阅读全文
摘要:
这也是道强连通分量的题;题目要求我们求出最少需要添加多少条边让整个图变成一个强连通分量;思路很简单,直接缩点,然后找出所有点中有多少出度为0,入度为0的点,最大的那个就是题目所求;贴代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define maxn 50005 7 using namespace std; 8 vectorve[maxn]; 9 int dfn[maxn],low[maxn],ans,n,m,nncount,b[maxn];10 int from[maxn],to[maxn],cntin[maxn] 阅读全文
摘要:
强连通分量题,用tarjin算法;这是一道很简单的tarjin算法题,基本上就是套模板;贴代码:#include#include#include#include#define maxn 10005using namespace std;vectorve[maxn];int dfn[maxn],low[maxn],ans,n,m,nncount;bool instack[maxn],vis[maxn];stackq;void tarjin(int x){ dfn[x]=low[x]=++nncount; vis[x]=1,instack[x]=1; q.push(x); ... 阅读全文