题意:

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

分析:

  Tarjan求SCC缩点,SCC的节点数为新点点权,然后求DAG上权最大的的路径。

代码如下:

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #define Maxn 1010
 5 #define Maxm 50010
 6
 7 struct node
 8 {
 9     int x,y,next;
10 }t[Maxm];
11
12 int first[Maxn],dfn[Maxn],low[Maxn],sta[Maxn],scc[Maxn],sum[Maxn];
13 bool bj[Maxn],bj2[Maxn],map[Maxn][Maxn];
14 int cnt,sl,cl;
15
16 int mymin(int x,int y) {return x<y?x:y;}
17 int mymax(int x,int y) {return x>y?x:y;}
18
19 void ffind(int x)
20 {
21     dfn[x]=low[x]=++cnt;
22     sta[++sl]=x;
23     for(int i=first[x];i;i=t[i].next)
24     {
25         int y=t[i].y;
26         if(dfn[y]==0)
27         {
28             ffind(y);
29             low[x]=mymin(low[x],low[y]);
30         }
31         else if(scc[y]==0) low[x]=mymin(low[x],dfn[y]);
32     }
33     if(dfn[x]==low[x])
34     {
35         cl++;
36         while(1)
37         {
38             int z=sta[sl--];
39             scc[z]=cl;
40             sum[cl]++;
41             if(z==x) break;
42         }
43     }
44 }
45
46 int dfs(int x)
47 {
48     int ans=0;
49     bj[x]=1;
50     for(int i=1;i<=cl;i++) if(map[x][i]==1&&bj[i]==0)
51      ans=mymax(ans,dfs(i));
52     ans+=sum[x];
53     bj[x]=0;
54     return ans;
55 }
56
57 int main()
58 {
59     int T;
60     scanf("%d",&T);
61     while(T--)
62     {
63         int n,m,ans=0;
64         scanf("%d%d",&n,&m);
65         memset(first,0,sizeof(first));
66         memset(dfn,0,sizeof(dfn));
67         memset(sum,0,sizeof(sum));
68         memset(bj,0,sizeof(bj));
69         memset(map,0,sizeof(map));
70         memset(scc,0,sizeof(scc));
71         cnt=0;sl=0;cl=0;
72         for(int i=1;i<=m;i++)
73         {
74             int x,y;
75             scanf("%d%d",&t[i].x,&t[i].y);
76             t[i].next=first[t[i].x];first[t[i].x]=i;
77         }
78         for(int i=1;i<=n;i++) if(dfn[i]==0) ffind(i);
79         for(int i=1;i<=m;i++) if(scc[t[i].x]!=scc[t[i].y]) map[scc[t[i].x]][scc[t[i].y]]=1;
80         for(int i=1;i<=cl;i++) ans=mymax(ans,dfs(i));
81         printf("%d\n",ans);
82     }
83     return 0;
84 }

UVA11324

2016-03-17 16:54:20

转载于:https://www.cnblogs.com/Konjakmoyu/p/5288068.html

【UVA11324】The Largest Clique (SCC)相关推荐

  1. 【BZOJ1797】[AHOI2009]最小割(网络流)

    [BZOJ1797][AHOI2009]最小割(网络流) 题面 BZOJ 洛谷 题解 最小割的判定问题,这里就当做记结论吧.(源自\(lun\)的课件) 我们先跑一遍最小割,求出残量网络.然后把所有还 ...

  2. 是男人就下100层【第四层】——Crazy贪吃蛇(2)

    在上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(1)>中我们让贪吃蛇移动了起来,接下来我们来实现让贪吃蛇能够绕着手机屏幕边线移动而且能够改变方向 一.加入状态并改动代码 首先我 ...

  3. 【Android】Parse开发笔记(1)—— 准备

    一.简介 Parse是由 YC 孵化出来的.专为移动应用提供后台服务的云计算平台,为开发者包办繁琐的后台服务,让开发者只需专注于具体的开发工作.它提供任意数据保存.照片或其它文件存储.发送推送通知.创 ...

  4. 【 MATLAB 】DFT性质讨论(一)线性、循环反转、共轭与实序列的对称性的MATLAB实现

    上篇博文通过在理论上讨论了DFT的三个性质:[ MATLAB ]DFT性质讨论(一)线性.循环反转与共轭 分别讨论: 一.线性 给出一个例子,给出x1和x2,x3 = 0.3*x1+0.8*x2; 之 ...

  5. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  6. linux 进程间通信 dbus-glib【实例】详解二(下) 消息和消息总线(ListActivatableNames和服务器的自动启动)(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  7. linux 进程间通信 dbus-glib【实例】详解二(上) 消息和消息总线(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  8. 【BZOJ1934】善意的投票(网络流)

    [BZOJ1934]善意的投票(网络流) 题面 Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己 ...

  9. 杜教筛模板(P4213 【模板】杜教筛(Sum))

    P4213 [模板]杜教筛(Sum) 套路推式子 求s(n)=∑i=1nf(i)∑i=1n(f∗g)(i)=∑i=1n∑d∣if(d)g(id)=∑d=1n∑i=1⌊nd⌋f(i)g(d)=∑d=1n ...

最新文章

  1. Word中的图片显示出不来的解决办法
  2. python文字教程-Python
  3. muduo之channel
  4. jQuery中Map的使用
  5. Vue中去掉表单对象上前后空格
  6. QT的QStyle类的使用
  7. jacoco + junit + mock 单测没有统计覆盖率问题
  8. java 泛型 父子_使用通配符和泛型:完成父子类关系的List对象的类型匹配
  9. Ionic3 环境搭建以及基础配置实现(更新中)
  10. Linux的JVM可以从SUN网站上下载
  11. Shell告警系统(需求分析,告警系统主脚本,告警系统配置文件,告警系统监控项目)...
  12. fullcalendar自定义搜索框_高效搜索任意文件,拯救凌乱的电脑桌面!
  13. 什么是html写出html的文档结构,HTML第二课:认识HTML4和HTML5的文档结构
  14. stl------set
  15. 【SSH】 之 Struts2
  16. 解决/usr/bin/pip: No such file or directory
  17. TMDB电影数据分析
  18. 由于 Exception.tostring()失败,因此无法打印异常字符串
  19. Appium常用操作之《元素定位、swipe滑屏操作》
  20. CompletableFuture模拟复杂场景使用测试。。。

热门文章

  1. 关于解决tomcat的一个错误
  2. springboot学习笔记(四)
  3. DM368开发 -- 制作ubifs文件系统
  4. 大数运算(3)——大数减法
  5. shell 脚本比较字符串相等_shell字符串比较判断是否为数字
  6. 32位x86处理器架构
  7. github 地图上画区域的工程_筑工程测量区别
  8. python redis模块_python redis 模块 官方文档(中)
  9. 中班科学计算机,幼儿园中班科学课件:《照镜子》
  10. python3.4编程_求教python3.4的编程问题