poj 2762
题意:
类似于强联通,这个是求一个图只要任意两点能够x- >y或者y -> x ,就能行,而不一定要求两个都符合;
思路:先tarjan进行联通缩点,缩点思路为:走tarjan的时候进行了染色,知道某个点数属于哪个联通块,然后对每个边的两端点进行是否属于同一个联通块进行判断,如果不是同一个联通块,就得对缩完后的点进行加边,然后就形成了一个DAG,然后直接用topo,,然后在图上做拓扑排序,如果排序过程中,出现1个以上的点入度同时为0时,那么就不满足条件。;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int maxn = 1000 + 10;
int n,m;
int head[maxn * 10];
struct Edge
{
Edge(){}
Edge(int x,int y):to(x),next(y){}
int to;
int next;
}