随笔分类 - hdu
摘要:这也是道强连通分量的题;题目要求我们求出最少需要添加多少条边让整个图变成一个强连通分量;思路很简单,直接缩点,然后找出所有点中有多少出度为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); ...
阅读全文
摘要:第一个图论题,拓扑排序;挺容易的,基本上就是一个裸地拓扑排序;代码: 1 #include 2 #include 3 using namespace std; 4 int a[505][505],ans[505],cnt[505],n,m,x,y; 5 6 void top_sort() 7 { 8 for(int i=1; i<=n; i++) 9 for(int j=1; j<=n; j++)10 if(a[i][j]==1)11 cnt[j]++;12 for(int i=1; i<=n; i++)...
阅读全文