模板:强连通分量和缩点

洛谷 P2002 消息扩散

缩点后输出入度为0的点
(tarjan)
#include
#include
#include
#define N 100010
#define M 500010
using namespace std;
int n,m,x,y,Q[M],dfn[N],low[N],inq[N],p[N],in[N],tail,now,size,ans;
vectorg[N];
void Tarjan(int u) {
    Q[++tail]=u;
    inq[u]=1;
    dfn[u]=low[u]=++now;
    for(int i=0;i

 洛谷P2341 [HAOI2006]受欢迎的牛

如果缩点后出度为0的点个数为1,输出出度为0的点中包含的点数;不然输出0
(kosaraju)
#include
#include
#include
#include
#define N 10010
using namespace std;
int n,m,a,b,vis[N],Q[N*5],p[N],cnt[N],out[N],tail,size,ans,flag;
vectorg[N],rev[N];
void dfs1(int u) {
    vis[u]=1;
    for(int i=0;i=0;i--) {
        if(!vis[Q[i]]) {
            dfs2(Q[i]);
            size++;
        }
    }
    for(int i=1;i<=n;i++) {
        for(int j=0;j

 洛谷P2812 校园网络

(tarjan)

#include
#include
#include
#define N 10010
using namespace std;
int n,m,x,Q[N*5],inq[N],dfn[N],low[N],p[N],in[N],out[N],tail,now,size,cnt1,cnt2;
vectorg[N];
void Tarjan(int u) {
    Q[tail++]=u;
    inq[u]=1;
    dfn[u]=low[u]=++now;
    for(int i=0;i


你可能感兴趣的:(模板)