UVA 11324 The Largest Clique (强连通分量 +dp)

题目链接:UVA 11324

题意:给一个有向图,求一个结点数最大的结点集,使得该结点集中任意两点u和v满足:要么u可以到达v,要么v可以到达u,或是相互可达

建图,跑一遍强联通,然后用连通分量建新图,求一个新的DAG图上的最大权路径

#include
#include
#include
#include
#include
using namespace std;
const int maxn=1e5+7;
const int maxm=1e5+7;
struct Node
{
    int to;
    int next;
}edge[maxm<<1];
int cnt;
int idx;
int scc_cnt;
int head[maxn];
int dfn[maxn];
int low[maxn];
bool vis[maxn];
int num[maxn];
int belong[maxn];
int dp[maxn];
stack sta;
vector G[maxn];
void init()
{
    cnt=idx=scc_cnt=0;
    memset(head,-1,sizeof(head));
    memset(dfn,0,sizeof(dfn));
    memset(low,0,sizeof(low));
    memset(vis,false,sizeof(vis));
    memset(num,0,sizeof(num));
    memset(belong,-1,sizeof(belong));
    while(!sta.empty()) sta.pop();
    for(int i=0;i

 

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