/*题意:给一张有向图,求这样的一个点集,使得集合中的点u,v,u->v,or v->u,or,u<->v。对图缩点,构造一张DAG。在DAG上作dp最长路。点权为每个强连通分量重节点的个数。
*/
#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int maxn=1010;
const int maxm=50001;
struct edge
{int to,next;
} e[maxm];
vector<int> map[maxn];
int head[maxn],low[maxn],stack[maxn],dfn[maxn],belong[maxn],dp[maxn],num[maxn];
bool vis[maxn];
int n,t,scnt,top,cnt;
void add(int i,int j)
{e[t].next=head[i];e[t].to=j;head[i]=t++;
}
void tarjan(int u)
{int tt;dfn[u]=low[u]=++cnt;stack[top++]=u;vis[u]=true;for(int i=head[u]; i!=-1; i=e[i].next){int j=e[i].to;if(!dfn[j]){tarjan(j);low[u]=min(low[u],low[j]);}else if(vis[j])low[u]=min(low[u],low[j]);}if(low[u]==dfn[u]){scnt++;do{tt=stack[--top];belong[tt]=scnt;vis[tt]=false;}while(u!=tt);}
}
int f(int u)
{if(dp[u]) return dp[u];int ans=0;for(int i=0; i<(int)map[u].size(); i++)ans=max(ans,f(map[u][i]));return dp[u]=ans+num[u];
}
int main()
{int T,m,a,b;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);memset(head,-1,sizeof(head));memset(belong,0,sizeof(belong));memset(low,0,sizeof(low));memset(dfn,0,sizeof(dfn));memset(stack,0,sizeof(stack));memset(vis,false,sizeof(vis));memset(dp,0,sizeof(dp));memset(num,0,sizeof(num));top=0;cnt=scnt=t=0;while(m--){scanf("%d%d",&a,&b);add(a,b);}for(int i=1; i<=n; i++){if(!dfn[i]) tarjan(i);}memset(vis,false,sizeof(vis));for(int i=1; i<=scnt; i++) map[i].clear();for(int i=1; i<=n; i++){for(int j=head[i]; j!=-1; j=e[j].next){int u=e[j].to;if(belong[i]!=belong[u]){map[belong[i]].push_back(belong[u]);vis[belong[u]]=true;//从入度为0点开始搜}}num[belong[i]]++;}int ans=0;for(int i=1; i<=scnt; i++)if(!vis[i]) ans=max(ans,f(i));printf("%d\n",ans);}return 0;
}

LRJ白书图论 11324 - The Largest Clique uva相关推荐

  1. 倒水问题(Fill,UVA 10603) lrj白书 p202

    看着lrj的代码自己敲了一遍,还没调试成功.... 有时间再进行完善 /*状态start到各个状态u1,u2,u3.....的倒水量分别为u1.dist,u2.dist,u3.dist....*//* ...

  2. UVAoj 11324 - The Largest Clique(tarjan + dp)

    题意:给定一个有向图,寻找一个点数最大集合,使得这个集合中的任意两个点 u,v, 都有u->v 或者 v->u 或者u<==>v 思路:首先将强连通分量通过tarjan算法求出 ...

  3. The Largest Clique UVA - 11324( 强连通分量 + dp最长路)

    这题  我刚开始想的是  缩点后  求出入度和出度为0 的点  然后统计个数  用总个数 减去 然而 这样是不可以的  画个图就明白了... 如果  减去度为0的点  那么最后如果出现这样的情况是不可 ...

  4. 白书P61 - 点集配对问题

    白书P61 - 点集配对问题 状压DP #include <iostream> #include <cstdio> #include <cstring> using ...

  5. 【UVA11324】The Largest Clique (SCC)

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

  6. UVA11324-- The Largest Clique(SCC+DP)

    题目链接 题意:给出一张有向图,求一个结点数最大的结点集,使得该结点集中随意两个结点u和v满足:要么u能够到到v,要么v能够到达u(u和v能够互相到达) 思路:我们能够缩点,用Tarjan求出全部强连 ...

  7. UVA 1324 The Largest Clique 最大团(强连通分量,变形)

    题意:给一个有向图,要求找出一些点,使得这些点中的任意点对,要么可以互通,要么单向可达. 思路:最低只要求单向可达即可,即a->b都可以算进去. 强连通分量内的点肯定是满足要求的,可以全选,但是 ...

  8. 【算法学习笔记】03.白书练习题stat(排序入门:冒泡,桶)

    原题: 输入一些学生的分数,哪个分数出现的次数最多?如果有多个并列,从小到大输出. 任务1,分数为不超过100的非负整数.(题眼.) 任务2,分数为不超过100.00的非负实数.保留两位小数(两位的处 ...

  9. UVA 116 Unidirectional TSP (白书dp)

    http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=18206 1 /* 2 题目大意: 3 从第一列的任意一格出发,到子最 ...

最新文章

  1. PMP-【第1章 引论】-2020-12-29(25页-34页)
  2. Thinking in java基础之集合框架
  3. (转)【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结...
  4. RabbitMQ Network Partitions 处理策略
  5. python列表元素之和_python实现计算列表元素之和
  6. MySQL InnoDB Memcached Plugin在Oray公司的实践
  7. 桃李不言,下自成蹊——《大数据》编辑部祝各位老师节日快乐!
  8. 6款英雄主题fcpx标题字幕插件:Hero Shot Titles for Mac
  9. DB2时间函数 实现 时间加减
  10. 知乎发布“战疫”数据报告:“新型肺炎”相关回答获17.3亿次阅读
  11. mysql 数据库dbhelp_策略模式实现支持多种类数据库的DBHelp
  12. 厉害了,用python爬取自己的微信朋友
  13. windows cmd命令行命令
  14. Java中线程出现Exception in thread Thread-0 java.lang.IllegalMonitorStateException异常 解决方法...
  15. 爬虫百度图片进入百度验证怎么办?
  16. 前端js使用jszip实现文件压缩功能
  17. hibernate查询的方式 都有哪些
  18. 微信小程序头像怎么改变形状_微信小程序 open-data更改样式 open-data 显示头像 圆形...
  19. 病毒式营销和网络口碑营销的区别
  20. windows主机和虚拟机设置桥接

热门文章

  1. html5中article元素的使用方法
  2. 快来看看这几个iPhone手机的实用功能
  3. Python 字典dict详解(超详细)
  4. 日语课学过的初级惯用句
  5. oracle执行计划案例,返璞归真 - Oracle 9i的RBO执行计划案例
  6. 创业方向:O2O及移动社交 from 沈博阳
  7. java中print换行符_如何在java中打印带换行符的字符串
  8. 我收藏的有关Python的电子书和资料
  9. foss测试_如何与您的公司谈论FOSS
  10. 铁总:2019年春运火车票已售出3.83亿张