//Tarjan算法模板题,求出强连通分量,如果是1,所有的房间两两相连
#include<stdio.h>
#include<stack>
using namespace std;
int n,m,dfs[100001],low[100002],ins[100002];
struct edge
{
int ed;
struct edge *next;
}*p[100002];
void add(int x,int y)
{
edge *q=new edge;
q->ed=y;
q->next=p[x];
p[x]=q;
}
int ans,idx;
stack<int>Q;
void Tarjan(int x)
{
int v;
dfs[x]=low[x]=idx++;
Q.push(x);
ins[x]=1;
for( edge *j=p[x];j;j=j->next)
{
......
阅读全文