hdu4635(强连通)

链接:点击打开链接

题意:问一个有向图最多添加多少条边使得这个图仍不是强连通图,如果这个图已经是强连通图则直接输出-1

代码:

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int INF=0x3f3f3f3f;
int V,E;
vector G[100005];
vector rG[100005];
vector vs;
bool used[100005];
int in[100005],out[100005];
int x[100005],y[100005],cmp[1000005],cnt[1000005];
void addedge(int from,int to){
    G[from].push_back(to);
    rG[to].push_back(from);
}
void dfs(int v){
    int i;
    used[v]=1;
    for(i=0;i=0;i--)
    if(!used[vs[i]])
    rdfs(vs[i],k++);
    return k;
}                                               //强连通模板
int main(){                                     //因为要使得最后图不是强连通,并且
    int t,i,j,ans,cas,tmp;                      //添加的边最多,因此最后图的强连通
    scanf("%d",&t);                             //分量应为2,并且两部分都是完全图,
    for(cas=1;cas<=t;cas++){                    //并且两部分之间可连接单向边
        scanf("%d%d",&V,&E);
        for(i=0;i

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