UVa 11324 最大团(强连通分量缩点)

https://vjudge.net/problem/UVA-11324

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

 

思路:

找到SCC后进行缩点建图,每个点的权值则为其连通分量的点数,这样就是找DAG上一条最大路径,DP解决。

  1 #include<iostream>
  2 #include<algorithm>
  3 #include<cstring>
  4 #include<cstdio>
  5 #include<vector>
  6 #include<stack>
  7 #include<queue>
  8 #include<cmath>
  9 using namespace std;
 10 
 11 const int maxn=1000+5;
 12 
 13 int n,m;
 14 
 15 vector<int> G[maxn];
 16 int pre[maxn],lowlink[maxn],sccno[maxn],dfs_clock,scc_cnt;
 17 int num[maxn];
 18 int map[maxn][maxn];
 19 int d[maxn];
 20 stack<int> S;
 21 
 22 void dfs(int u)
 23 {
 24     pre[u]=lowlink[u]=++dfs_clock;
 25     S.push(u);
 26     for(int i=0;i<G[u].size();i++)
 27     {
 28         int v=G[u][i];
 29         if(!pre[v])
 30         {
 31             dfs(v);
 32             lowlink[u]=min(lowlink[u],lowlink[v]);
 33         }
 34         else if(!sccno[v])
 35         {
 36             lowlink[u]=min(lowlink[u],pre[v]);
 37         }
 38     }
 39     if(lowlink[u]==pre[u])
 40     {
 41         scc_cnt++;
 42         for(;;)
 43         {
 44             int x=S.top(); S.pop();
 45             sccno[x]=scc_cnt;
 46             if(x==u)  break;
 47         }
 48     }
 49 }
 50 
 51 void find_scc()
 52 {
 53     dfs_clock=scc_cnt=0;
 54     memset(sccno,0,sizeof(sccno));
 55     memset(pre,0,sizeof(pre));
 56     for(int i=0;i<n;i++)
 57         if(!pre[i])  dfs(i);
 58 }
 59 
 60 int dp(int u)
 61 {
 62     int& ans=d[u];
 63     if(ans!=-1)   return ans;
 64     ans=num[u];
 65     for(int i=1;i<=scc_cnt;i++)
 66     {
 67         if(i!=u && map[u][i])   ans=max(ans,num[u]+dp(i));
 68     }
 69     return ans;
 70 }
 71 
 72 int main()
 73 {
 74     //freopen("D:\\input.txt","r",stdin);
 75     int T;
 76     scanf("%d",&T);
 77     while(T--)
 78     {
 79         scanf("%d%d",&n,&m);
 80         for(int i=0;i<n;i++)  G[i].clear();
 81         while(m--)
 82         {
 83             int u,v;
 84             scanf("%d%d",&u,&v);
 85             u--; v--;
 86             G[u].push_back(v);
 87         }
 88         find_scc();
 89         memset(num,0,sizeof(num));
 90         memset(map,0,sizeof(map));
 91         for(int i=0;i<n;i++)
 92             num[sccno[i]]++;
 93         for(int u=0;u<n;u++)
 94         {
 95             for(int i=0;i<G[u].size();i++)
 96             {
 97                 int x=sccno[u];
 98                 int y=sccno[G[u][i]];
 99                 map[x][y]=1;
100             }
101         }
102         int ans=0;
103         memset(d,-1,sizeof(d));
104         for(int i=1;i<=scc_cnt;i++)
105             ans=max(ans,dp(i));
106         printf("%d\n",ans);
107     }
108     return 0;
109 }

 

转载于:https://www.cnblogs.com/zyb993963526/p/6798234.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于mysql修改密码 set password for root@localhost = password(‘xxx‘);报错解决方法

mysql> SET PASSWORD FOR rootlocalhost PASSWORD(123456); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near PASSWORD(123456) at line 1 通过下面的命令…

佳能Linux230快门速度怎么调,80d快门速度怎么调

80d快门速度怎么调导语&#xff1a;佳能80d作为70d的升级版机型改变不是很大&#xff0c;但是也有一些很好的升级。很多朋友都已经入手了这款单反&#xff0c;一些入门的朋友可能对这款单反的操作不太明白。拿到相机之后拍出来的照片并不理想&#xff0c;本文就这款相机做点简单…

身份证照片比对,身份鉴别,人脸实名

详情链接&#xff1a;http://www.haoservice.com/docs/110 基于国家人口库,通过面部识别相关技术鉴证识别用户真实身份,人脸实名 支持格式&#xff1a; JSON/XML请求方式&#xff1a; POST接口备注&#xff1a; 测试表单&#xff1a;<form name"input" action&quo…

ie 7 beta 2出来了

下载地址&#xff1a;http://www.microsoft.com/windows/IE/ie7/ie7betaredirect.mspx

c语言编写源程序内容,编程(C语言源程序代码)讲述.doc

已知 S11/(12)1/(123)…1/(123…N) &#xff0c;当N的值为50时&#xff0c;求S的值。要求&#xff1a;按四舍五入的方式精确到小数点后第四位。#include #includemain(){float s0.0;int n,t0;for(n1;n<50;n){ttn;ss1.0/t;}printf("%7.4f",s);}1.9608把一张一元钞票…

【BootStrap】 概述 CSS

BootStrap BootStrap由Twitter开发&#xff0c;基于HTML,CSS,JS&#xff0c;是一套前端框架。它的特点是对浏览器良好的支持&#xff08;目前市面上所有流行浏览器都可以&#xff09;&#xff0c;兼容移动设备&#xff0c;以及响应式设计&#xff08;响应式CSS自适应于各种设备…

1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains解决

1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column btc.a.applicant_unit which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 执行下如下语句&…

祝贺您

如果您阅读到这篇文章&#xff0c;这就意味着您注册的博客已经申请成功。转载于:https://blog.51cto.com/11067/2441

SQL server中DateTime类型字段如何赋值零?

.net 1.1 不支持Sql Server datetime字段为空的情况.net 2.0 开始支持Sql Server datetime字段为空在不支持datetime为空的情况下&#xff0c;Sql Server数据库一般是选择一个特定的日期代表空值&#xff0c;默认的情况下&#xff0c;是1900-1-1

Java DO到DTO转换利用spring 的BeanUtils.copyProperties

Java DO到DTO转换利用spring 的BeanUtils.copyProperties() public static <T> List<T> copy(Object sourceList, Class<?> beanClass) throws Exception {List<Object> sList (List<Object>) sourceList;List<Object> tList new Arra…

c语言记录五个数组编程,C语言经典编程之数组

1、元素互换定义一个整型数组num[10]&#xff0c;随机初始化数组中元素值&#xff0c;然后将头尾元素两两互换&#xff0c;将交换后的数组值输出。【代码】#include int main(void){int num[10] {};int i 0;int temp;for(i 0; i < 10; i){scanf("%d", &num…

java 反射(Reflection) 详解

jAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 众所周知哈 ja…

c程序语言设计练习题,C语言程序设计练习题(含程序及参考答案)

《C语言程序设计练习题(含程序及参考答案)》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言程序设计练习题(含程序及参考答案)(47页珍藏版)》请在人人文库网上搜索。1、1、定义一个函数int fun(int a,int b,int c)&#xff0c;它的功能是&#xff1a;若a,b,c能构…

终于可以放下心来了,呜呜...

从上周六开始到今天早上&#xff0c;一直在为开题报告的事情受煎熬。想题目想了一天半&#xff0c;实际写出来也就半天的时间差不多&#xff1b;交上去了之后还要担心着是不是会打回来重写。。。呜呼。。。 终于早上等到了回复&#xff0c;得到了自己想听的那些话&#…

mac上安装zookeeper教程

下载 下载tar包解压&#xff0c;推荐使用3.5.9版本&#xff0c;不要使用3.6以上的高版本&#xff0c;它jdk1.8冲突&#xff0c;也不要直接brew install zookeeper--默认最高版本 国内镜像下载地址&#xff1a; http://mirrors.hust.edu.cn/apache/zookeeper/stable/ 下载 ap…

10、自学——Linux的学习进度与任务【用户和用户组相关操作】

用户和用户组相关操作 用户和用户组定义&#xff1a; 用户&#xff1a;资源获取标识符&#xff08;资源分配&#xff09;&#xff0c;是安全权限模型的可信要素之一 用户组&#xff1a;用户组是指多个用户的集合&#xff0c;方便对一类需要同样权限的用户授权 密码&#xff1a;…

c语言构造数据类型有,《c语言程序设计基础7构造数据类型.ppt

《c语言程序设计基础7构造数据类型第7章 构造数据类型 第7章 构造数据类型 第7章 构造数据类型 7.1 构造数据类型概述 构造数据类型是C语言的一个特色&#xff0c;它是由一些简单数据类型构造而来的。 前面所学的数组就是其中最基本的的一种。数组是由若干类型相同的元素构成&a…

在UnitTest中读取*.config文件的郁闷

- -Visual Stuido 2005集成了Unit Test功能后&#xff0c;创建和管理Unit Test变得比原来简单多了&#xff0c;并且独立项目的Unit Test模块和代码不会再"残留"于我们的dll中。不过VS 2005 Unit Test运行方法的原理和其他的Unit Test框架一样&#xff0c;也是使用反射…

Maven属性(properties)标签的使用

在命令行使用属性时&#xff0c;是-D&#xff0c;比如&#xff1a;mvn -Dinputtest 引用官方的说明https://maven.apache.org/pom.html#Properties&#xff1a; Properties 属性是了解POM基础知识的最后一个要素。Maven属性是值占位符&#xff0c;如Ant中的属性。它们的值可以通…