P2746 [USACO5.3]校园网Network of Schools 缩点拓扑

题意:n个点,接下来n行每行代表 第 i 个 点和这一行的点有一条有向边,每行以0结束。

两个问题:1.最少从几个点出发能到达所有点, 2.使得任意一点出发能到达所有点最少加多少条有向边。

解:先缩点建图,强连通缩点后图上就没有环只有链,那么每条链就有唯一入度为0的点

1.图中入度为0点的个数,2.出度和入度为0的最大者(加边使得不存在出度和入度为0的点)。注意 只有一个连通块 特判!

#include 
using namespace std;
const int maxn = 100005;
int n,m,idx=0,k=1,Bcnt=0;
int head[maxn];
int ins[maxn]={0};
int dfn[maxn]={0},low[maxn]={0};
int Belong[maxn];
stack  s;
vector mp[105];
int in[105],out[105];
struct edge
{
    int v,next;
}e[maxn*5];
int min(int a,int b)
{
    return a

 

你可能感兴趣的:(图论)