题目链接:https://vjudge.net/problem/UVA-11324
题意:给一张有向图G,求一个节点数最大的结点集,使得该结点集中任意两个结点u和v满足:要么u可以到达v,要么v可以到达u(或者u和v相互可达)
思路:首先求出图的强连通分量,并把其收缩点得到scc图,每个scc结点权值为它的节点数。则问题转化成了,给出一个DAG图,各点权值已知,求一条权值最大的路径。可以用dp进行求解。
#include<cstdio>
#include<cstring>
#include<string>
#include<cctype>
#include<iostream>
#include<set>
#include<map>
#include<cmath>
#include<sstream>
#include<vector>
#include<stack>
#include<queue>
#include<bitset>
#include<algorithm>
#define fin(a) freopen("a.txt","r",stdin)
#define fout(a) freopen("a.txt","w",stdout)
using namespace std;
const in

本博客介绍了如何解决UVA 11324问题,即给定一个有向图,寻找最大的节点集合,使得集合内任意两个节点相互可达。通过先计算图的强连通分量,然后将其转化为DAG图,利用动态规划(DP)方法寻找权值最大的路径。
最低0.47元/天 解锁文章
188

被折叠的 条评论
为什么被折叠?



