uva11324 - The Largest Clique 有向图强连通分量+缩点+DP

[图] 找出u到v的所有路径-邻接表(有向图)-DFS(严蔚敏《数据结构》7.28) 题目来源:严蔚敏《数据结构》C语言版本习题册 7.28 【题目】已知有向图和图中两个顶点u和v,试编写算法求有向图中从u到v的所有简单路径,并以下图为例手工执行你的算法,画出相应的搜索过程图 【测试数据】 【结果】 【答案】 /*---------------------------------------------------------------- |7.28 有向图-从u-v的... 阅读详情

Given a directed graph G, consider the following transformation. First, create a new graphT(G) to have the same vertex set as G. Create a directed edge betweentwo vertices u and v in T(G) if and only if there is a pathbetween u and v in G that follows the directed edges only in the forwarddirection. This graph T(G) is often called the transitive closure of G.

We define a clique in a directed graph as a set of vertices U such thatfor any two vertices u and v in U, there is a directededge either from u to v or from v to u (or both).The size of a clique is the number of vertices in the clique.

The number of cases is given on the first line of input. Each test case describes a graph G.It begins with a line of two integersn and m, where 0 ≤ n ≤ 1000 is the number ofvertices of Gand 0 ≤ m ≤ 50,000 is the number of directed edges of G.The vertices of G are numbered from 1 to n.The following m lines contain two distinct integers u and vbetween 1 and n which definea directed edge from u to v in G.

For each test case, output a single integer that is the size of the largest clique in T(G).

Sample input

1
5 5
1 2
2 3
3 1
4 1
5 2

Output for sample input

4

  给出有向图,求一个节点数最大的节点集,使节点集中任意两个点u和v满足:u可以到v或者v可以到u或者可以相互到达。

  同一个强连通分量中的点要么都选,要么都不选,求出强连通分量并记录每个强连通分量的节点数,把这个强连通分量看成一个点,这个点的权值为强连通分量包含的节点数。缩点之后,把可达的点建边,这样形成了一个无环图,用记忆化搜索找一条权值最大的路径。

#include<iostream>
#include<queue>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<set>
#include<map>
#include<vector>
#include<stack>
#include<algorithm>
#define INF 0x3f3f3f3f
#define eps 1e-9
#define MAXN 1010
#define MAXM 2000010
#define MAXNODE 105
#define MOD 100000
#define SIGMA_SIZE 4
typedef long long LL;
using namespace std;
int T,N,M,pre[MAXN],low[MAXN],sccno[MAXN],dfs_clock,scc_cnt;
int p[MAXN],dp[MAXN],vis[MAXN][MAXN];
stack<int> S;
vector<int> G[MAXN],V[MAXN];
void dfs(int u){
    pre[u]=low[u]=++dfs_clock;
    S.push(u);
    int L=G[u].size();
    for(int i=0;i<L;i++){
        int v=G[u][i];
        if(!pre[v]){
            dfs(v);
            low[u]=min(low[u],low[v]);
        }
        else if(!sccno[v]) low[u]=min(low[u],pre[v]);
    }
    if(low[u]==pre[u]){
        scc_cnt++;
        for(;;){
            int x=S.top();
            S.pop();
            sccno[x]=scc_cnt;
            p[scc_cnt]++;
            if(x==u) break;
        }
    }
}
void find_scc(){
    dfs_clock=scc_cnt=0;
    memset(pre,0,sizeof(pre));
    memset(sccno,0,sizeof(sccno));
    memset(p,0,sizeof(p));
    for(int i=1;i<=N;i++) if(!pre[i]) dfs(i);
}
int DP(int u){
    int& ans=dp[u];
    if(ans!=-1) return ans;
    ans=p[u];
    int L=V[u].size(),MAX=0;
    for(int i=0;i<L;i++) MAX=max(MAX,DP(V[u][i]));
    ans+=MAX;
    return ans;
}
int main(){
    freopen("in.txt","r",stdin);
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&N,&M);
        for(int i=1;i<=N;i++) G[i].clear();
        int u,v;
        while(M--){
            scanf("%d%d",&u,&v);
            G[u].push_back(v);
        }
        find_scc();
        for(int i=1;i<=scc_cnt;i++) V[i].clear();
        memset(vis,0,sizeof(vis));
        for(int u=1;u<=N;u++){
            int L=G[u].size();
            for(int i=0;i<L;i++){
                int v=G[u][i],m=sccno[u],n=sccno[v];
                if(m!=n&&!vis[m][n]){
                    V[m].push_back(n);
                    vis[m][n]=1;
                }
            }
        }
        int ans=0;
        memset(dp,-1,sizeof(dp));
        for(int i=1;i<=scc_cnt;i++) if(dp[i]==-1) ans=max(ans,DP(i));
        printf("%d\n",ans);
    }
    return 0;
}



保姆级教程:用Python从UCI下载波士顿房价数据集,手把手跑通线性回归、岭回归和Lasso 本文提供了一份保姆级教程,详细讲解如何用Python从UCI下载波士顿房价数据集,并手把手实现线性回归、岭回归和Lasso回归模型。内容涵盖数据获取、清洗、特征分析到模型构建与评估的全流程,特别适合机器学习初学者掌握波士顿房价预测这一经典案例。 阅读详情

相关推荐

昇腾910安装驱动出错,降低Centos7.6的内核版本

Centos7.6 启动内核修改,解决昇腾910安装驱动错误的问题。

深蓝 3300

UVA 11324 - The Largest Clique(强连通分量+缩点)

UVA 11324 - The Largest Clique 题目链接 题意:给定一个有向图,要求找一个集合,使得集合内任意两点(u, v)要么u能到v,要么v能到u,问最大能选几个点 思路:强连通分量,构造出scc之后,缩点,每个点的权值是集合点个数,然后做一遍dag找出最大权值路径即可 代码: #include #include #include #incl

Remilia's 1636

OpenWrt虚拟机磁盘扩容实战:从SquashFS到ext4的完整避坑指南

本文详细介绍了OpenWrt虚拟机磁盘扩容的完整流程,重点对比了SquashFS和ext4文件系统在扩容操作上的关键差异。通过五步安全迁移法和直接分区调整方案,帮助用户有效解决磁盘空间不足问题,同时提供高级技巧和故障排除指南,确保扩容过程顺利无坑。

weixin_29251131的博客 229

图论算法与模型(训练指南题库)

一、基础题目 1、UVA 11624 Fire!迷宫问题 多源BFS 题意: 帮助joe走出一个大火蔓延的迷宫,其中joe每分钟可往上下左右四个方向之一走,所有着火的格子都会蔓延(空格与着火格有公共边,下一分钟这个空格也会着火)。迷宫中有一些障碍格,joe和火都无法进入,当joe走到一个边界的格子我们认为他走出了迷宫 输出R行C列的迷宫,#表示墙,.表示空地,J表示joe,F是着火格 ...

weixin_34138377的博客 709

智能制造 | 如何快速自动生成站位表及自动与BOM校验?

一、站位表(SMT行业中)是SMT上料防错的基础信息,用于对需上料物料与产线、贴片机位置、飞达规格型号、用量,建立基础资料。 SMT站位表是否正确? 首先需要人工确认站位表与SMT程序的是否符合,上料员依照站位表安装好后,确认人员需有第三方确认者 (品管确定)核对。 站位表内容包括什么? 站位表内容为:SMT站位号相对应的物料编码,元件位号,飞达大小/间距,数量等等,根据不同公司的要求而定义。 就目前来说,基本每一款贴片机都可以输出站位清单 但对于企业来说,直接输出的站位清单一般不直接使用,需要进行手动处理

vayoinfo111的博客 4942

BMW Standard Tools 宝马FSC工具套装下载

这是一款非常专业的一套宝马编码工具,懂行的人自然知道他的用处,不懂行的人,我解释再多也不会明白的,需要的拿去吧。软件名:BMW Standard Tools包含工具:BMW Coding Tool v2.50、change Language、CIC Mafia、Dr.Gini B021、EasyConnect、EDIABAS Konfigurator v1.1、EDIABAS Konfigurator v2.0.0、FSC-Tools_2.18、FSTool_v2_CarServer、INPA、ITool

Zj_arrow的博客 6995

poj3615 给你一个有向图,然后对于特定的点A与B,要你求出A到B之间所有可行路径的单段路距离最大值的最小值.

#include&lt;cstdio&gt; #include&lt;algorithm&gt; #define INF 1e9 using namespace std; const int maxn = 300+10; int n,m,t; int d[maxn][maxn]; void floyd() { for(int k=1;k&lt;=n;k++) for(int i=...

qq_40859951的博客 650

uniapp(安卓 | 苹果) - 最新详细实现App打包发布教程,uni-app苹果IOS软件应用上架App Store软件商店,uni-app打包发布安卓Android软件到各大应用商店(详细教程

uni-app,安卓android,苹果ios,uniapp App软件,Uniapp上架发布应用,打包构建,apk、app软件,应用商店,应用市场,app store,uni-app安卓苹果app上架应用商店,app应用从创建到上架_uniapp打包app的流程和上架,uniapp打包上架ios Appstore 最全流程,苹果应用商店上架教程,uniapp生成的app怎么上架到iphone的app store,uni-app打包到上架Android , ios完整详细流程,审核一直不通过,软件商店审核失

✅ 精选推荐文章 1万+

UVA11324 - The Largest Clique(强连通最大团)

Problem B: The Largest Clique Given a directed graph G, consider the following transformation. First, create a new graphT(G) to have the same vertex set as G. Create a directed edge between two ve

SCUT_Pein 869

K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

🔴 K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3万+

016、自动标注方案实战:用大模型(SAM/Grounding DINO)生成 YOLO 格式伪标签

本文介绍了一种利用大模型自动生成YOLO格式伪标签的实战方案。针对传统人工标注效率低、易出错的问题,作者提出结合Grounding DINO(零样本检测)和SAM(精细分割)的优势:前者快速生成候选框,后者优化边界精度。文章详细阐述了技术选型理由(平衡速度与精度)、环境搭建避坑指南(关键依赖版本)、核心三步流程(检测-分割-格式转换)以及后处理技巧(置信度分级过滤)。实验表明,该方案相比纯人工标注可节省80%时间,且经过SAM优化的边界框精度提升10-15%。特别强调了工程细节:文本描述格式、阈值设定、小目

zzfmlxs的博客 543

PIPI的有向图

题目描述 现在PIPI有一个有向图G , 他想知道这个有向图中有多少点对满足 u 能到达 v 并且 v 也能到达 u (u≠v)。 输入 输入第一行是两个数字 n,m 。代表该有向图的顶点数和边数 (n<=500, m<=10000)。 接下来m行每行两个数字 u 和 v, 代表 u 能够到达 v (1<=u,v<=n)。 输出 输出能够互相可达的点对数量。 样例输入 2 ...

weixin_44433678的博客 323

YOLO26涨点改进 | 全网独家创新,注意力改进篇| SCI一区Top | 引入AFCA自适应细粒度通道注意力,联合建模全局与局部通道依赖关系,适合目标检测、图像去雾、关键点检测、图像分类、图像分割

🔥本文提出了一种基于AFCA(自适应细粒度通道注意力)模块改进的YOLO26目标检测网络。AFCA通过联合建模全局与局部通道依赖关系,实现了更精细的通道注意力分配,能够增强目标相关特征并抑制背景噪声。该模块采用自适应融合策略动态平衡通道权重,在保持轻量级结构的同时,显著提升了小目标和复杂背景下的检测性能。文章详细介绍了AFCA的结构原理、实现优势,并提供了完整的代码实现和YAML配置文件,指导读者如何将该模块集成到YOLO26框架中。实验结果表明,AFCA在检测精度和鲁棒性方面优于传统注意力机制。

Ai缝合怪、助力小伙伴高效发论文 295

uva11324 The Largest Clique --- 强连通+dp

首先tarjan缩点,重新建图后,每个点的权值就是该点包含点的个数。 然后从入度为0的点开始记忆化搜索,dp[i]表示以i为根最多包含多少点。 #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f #define e

Unknown 966

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

算法-蓝桥杯习题(3-1)

蓝桥杯习题   目录   入门训练(详见 算法-蓝桥杯习题(1-1))Go   基础练习(详见 算法-蓝桥杯习题(2-1))Go 基础练习(详见 算法-蓝桥杯习题(2-2))Go 算法训练(详见 算法-蓝桥杯习题(3-1))Go 算法训练(详见 算法-蓝桥杯习题(3-2))Go 算法训练(详见 算法-蓝桥杯习题(3-3))Go 算法训练(详见 算法-蓝桥杯习题(3-4))Go...

GFox-鬼狐 3万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

连通、弱连通

有向图的连通性 有向图强连通分量在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(strongly connected components)。有向图的边都是单向的,因

sinat_24520925的专栏 9960

【算法与数据结构】——强连通分量

强连通分量 在一个有向图中,选取一个点集S,如果对于S中的任意两点u,v都满足u可到达v,则称S是强连通的。 如果一个强连通点集S中,不能在加入更多的点使得它仍然强连通,则称S是强连通分量。 例题 给定一个有向图,统计有多少点对u,v(u<v)满足:u可以到达v,且v可以到达u。 Tarjan算法 Kosaraju算法求强连通分量 无向图: 在无向图中,求解连通分量只需要按照1到n的顺序依次考虑每个点。 考虑到i点时,如果i点未被访问过,就说明找到了一个新的连通分量,从i点开始DFS即可找到i所在的连

气派飞鹰的博客 1072

牛客-求联通分量(dfs/Floyed-Warshall/tarjan)

题意: 给定一张N个点,M条边的有向图,问有多少点对(u,v)(u<v),满足u能到达v且v也能到达u。给定一张N个点,M条边的有向图,问有多少点对(u,v)(u<v),满足u能到达v且v也能到达u。 题目 tarjan(待补) ...

qq_43312551的博客 331

Dinic+当前弧优化

Dinic算法是不停用BFS构造层次图,然后

7141

Dijkstra 求最短路 最大流

原来Dijkstra算法不光只能求最短路问题,还能求最大流问题~~~求最短路 最大流" title="Dijkstra 求最短路 最大流"> 最短路问题时,Dijkstra算法的基本思想:   邻接矩阵w[x][y]保存x和y间的距离(别的设为INF,表示不连通,设为-1也行,后来更新加一个if(w[x][y]>=0)),数组d保存通过已经确定的点从起点到每个点的最短路。初始化d[0]=0,

1847

网络流 最大流 Edmonds-Karp算法

Edmonds-Karp算法,复杂度O(VE^2)。思想就是找增广路,不断增加流量。在残量(每条边上流量和容量的差)图上找一条每个边权值都为正的路(可以通过BFS,比DFS效率高),这些边权值里的最小值就是这条路可以增加的流量,然后在这条路径上更新流量。再重复找这样的路更新流量,直到找不到这样的路了就说明流量不能再增加了,当前的流就已经是最大流。   同时最大流也是最小割(权值和最小的割集)。设

1842

Bellman_Ford和Spfa两种方法判断负环

Bellman_Ford是通过N-1次循环求出每个点到原点的最短路的,每次循环遍历所有的边,如果能更新就更新。前面说过为什么N-1次就行(若一个点到起点的最短路需要经过N个点,包括他自己,那么第N次循环就能确定他的最短路)。   最短路一定是不含环的,如果存在负环就根本不存在最短路了。所以这个方法可以用来判断是否有负环,如果循环了N-1次后还能进行松弛操作,说明有负环。Bellman_Ford的

1712

hdu5294 Tricks Device 最短路+最小割 多校联合第一场

Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 66    Accepted Submission(s): 14 Problem Description Innocent Wu follows

1563

uva1416 - Warfare And Logistics 最短路树优化

The army of United Nations launched a new wave of air strikes on terroristforces. The objective of the mission is to reduce enemy's logistical mobility. Each airstrike will destroy a path and therefor

1002
上一篇: uva1364 - Knights of the Round Table 点-双联通分量
下一篇: 2-SAT
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值