The Largest Clique UVA - 11324
题文:https://vjudge.net/problem/UVA-11324
题解:
这个题目首先可以发现,只要是一个强连通分量,要么都选,要么都不选,将点权看成强连通分量的点数,所以这个题目就转化成了DAG上的最大路。
稍微dp一下就好了。
代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <stack>
#define MAXN 50100
using namespace std;
struct edge{
int first;
int next;
int to;
}a[MAXN*];
int dfn[MAXN],in[MAXN],low[MAXN],fa[MAXN],size[MAXN];
int dp[MAXN],b[MAXN],x[MAXN],y[MAXN];
int n,m,num1=,num2=,num3=;
stack<int> s; void cl(){
memset(low,,sizeof(low));
memset(dp,,sizeof(dp));
memset(dfn,,sizeof(dfn));
memset(fa,,sizeof(fa));
memset(size,,sizeof(size));
memset(a,,sizeof(a));num1=num2=num3=;
memset(in,,sizeof(in));
memset(b,,sizeof(b));
memset(x,,sizeof(x));
memset(y,,sizeof(y));
} void addedge(int from,int to){
a[++num1].to=to;
a[num1].next=a[from].first;
a[from].first=num1;
} void init(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
scanf("%d%d",&x[i],&y[i]);
addedge(x[i],y[i]);
}
} void tarjian(int now){
s.push(now);in[now]=;
dfn[now]=low[now]=++num3;
for(int i=a[now].first;i;i=a[i].next){
int to=a[i].to;
if(!dfn[to]){
tarjian(to);
low[now]=min(low[now],low[to]);
}
else if(in[to]) low[now]=min(low[now],dfn[to]);
}
if(low[now]==dfn[now]){
int u=-;
num2++;
while(u!=now){
u=s.top();s.pop();in[u]=;
fa[u]=num2;
size[num2]++;
}
}
} void make(){
memset(a,,sizeof(a));num1=;
for(int i=;i<=m;i++){
if(fa[x[i]]!=fa[y[i]]) addedge(fa[x[i]],fa[y[i]]);
}
} void pre(){
while(!s.empty()) s.pop();
for(int i=;i<=n;i++) if(!dfn[i]) tarjian(i);
make();
} int DP(int now){
if(b[now]) return dp[now];
b[now]=;
dp[now]+=size[now];
for(int i=a[now].first;i;i=a[i].next){
int to=a[i].to;
dp[now]=max(dp[now],size[now]+DP(to));
}
return dp[now];
} int main()
{
int t;cin>>t;
while(t--){
cl();
init();
pre();
for(int i=;i<=n;i++) DP(i);
int ans=;
for(int i=;i<=n;i++) ans=max(ans,dp[i]);
printf("%d\n",ans);
}
return ;
}
The Largest Clique UVA - 11324的更多相关文章
- The Largest Clique UVA - 11324( 强连通分量 + dp最长路)
这题 我刚开始想的是 缩点后 求出入度和出度为0 的点 然后统计个数 用总个数 减去 然而 这样是不可以的 画个图就明白了... 如果 减去度为0的点 那么最后如果出现这样的情况是不可 ...
- 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP)
layout: post title: 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP) author: "luowentaoaa" catalog: true ...
- UVA 11324 - The Largest Clique(强连通分量+缩点)
UVA 11324 - The Largest Clique 题目链接 题意:给定一个有向图,要求找一个集合,使得集合内随意两点(u, v)要么u能到v,要么v能到u,问最大能选几个点 思路:强连通分 ...
- uva 11324 The Largest Clique
vjudge 上题目链接:uva 11324 scc + dp,根据大白书上的思路:" 同一个强连通分量中的点要么都选,要么不选.把强连通分量收缩点后得到SCC图,让每个SCC结点的权等于它 ...
- uva 11324 The Largest Clique(图论-tarjan,动态规划)
Problem B: The Largest Clique Given a directed graph G, consider the following transformation. First ...
- UVA11324 The Largest Clique[强连通分量 缩点 DP]
UVA - 11324 The Largest Clique 题意:求一个节点数最大的节点集,使任意两个节点至少从一个可以到另一个 同一个SCC要选一定全选 求SCC 缩点建一个新图得到一个DAG,直 ...
- 『题解』UVa11324 The Largest Clique
原文地址 Problem Portal Portal1:UVa Portal2:Luogu Portal3:Vjudge Description Given a directed graph \(\t ...
- uva 11324
Problem B: The Largest Clique Given a directed graph G, consider the following transformation. First ...
- 【UVA11324】 The Largest Clique (Tarjan+topsort/记忆化搜索)
UVA11324 The Largest Clique 题目描述 给你一张有向图 \(G\),求一个结点数最大的结点集,使得该结点集中的任意两个结点 \(u\) 和 \(v\) 满足:要么 \(u\) ...
随机推荐
- String对象为什么不可变
转载:https://www.cnblogs.com/leskang/p/6110631.html 一.什么是不可变对象? As we all know, 在Java中, String类对象是不可变的 ...
- Golang 数组 切片 字典 基本知识点
数组 数组的声明 var arrayName [arraySize]dataType eg: var array1 [5]int 在声明数组时,必须指定数组名,数组长度和数组元素的类型. 数组的初始化 ...
- FreeSql (二十八)事务
FreeSql实现了四种数据库事务的使用方法,脏读等事务相关方法暂时未提供.主要原因系这些方法各大数据库.甚至引擎的事务级别五花八门较难统一. 事务用于处理数据的一致性,处于同一个事务中的操作是一个U ...
- CODESYS添加target
1.主界面进入Tools 2.Install,选择安装包
- Git客户端下载
链接:http://pan.baidu.com/s/1eRXsITO 密码:4i6e
- Netty源码分析 (十)----- 拆包器之LineBasedFrameDecoder
Netty 自带多个粘包拆包解码器.今天介绍 LineBasedFrameDecoder,换行符解码器. 行拆包器 下面,以一个具体的例子来看看业netty自带的拆包器是如何来拆包的 这个类叫做 Li ...
- Day 23 系统服务之救援模式
1.CentOS6与Centos 7启动流程 4.运行级别C6&C7 0 关机 1 单用户模式 (超级权限 必须面对实体硬件) 2 暂未使用 3 字符界面(黑框) 4 暂未使用 5 图形界面 ...
- js控制input框输入数字时,累计求和
input框输入数字时,自动开始计算累加 <div class="form-group"> <label for="inputPassword3&quo ...
- spring框架对于实体类复杂属性注入xml文件的配置
spring框架是javaWeb项目中至关重要的一个框架,大多web 项目在工作层次上分为持久层.服务层.控制层.持久层(dao.mapper)用于连接数据库,完成项目与数据库中数据的传递:服务层(s ...
- demo演示如何写一个无配置格式统一的日志
一.背景 大量项目在使用logback记日志,有部分项目使用日志混乱,格式不统一,多数人搞不懂配置文件,导致配置错误,现在需要开发一套统一的.少配置的日志组件,方便使用. 二.设计思路 尽量采用0配置 ...