这题  我刚开始想的是  缩点后  求出入度和出度为0 的点  然后统计个数  用总个数 减去

然而 这样是不可以的  画个图就明白了。。。

如果  减去度为0的点  那么最后如果出现这样的情况是不可以的

因为 1中的点  和  3 中的点不通。。

#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#define rap(a, n) for(int i=a; i<=n; i++)
#define MOD 2018
#define LL long long
#define ULL unsigned long long
#define Pair pair<int, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define _  ios_base::sync_with_stdio(0),cin.tie(0)
//freopen("1.txt", "r", stdin);
using namespace std;
const int maxn = 1010, INF = 0x7fffffff;
vector<int> G[50010];
int pre[maxn], low[maxn], sccno[maxn], dfs_clock, scc_cnt;
int w[maxn], line[maxn][maxn], d[maxn];
stack<int> s;
void dfs(int u)
{pre[u] = low[u] = ++dfs_clock;s.push(u);for(int i=0; i<G[u].size(); 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;if(x == u) break;}}
}void init()
{dfs_clock = scc_cnt = 0;mem(sccno, 0);mem(pre, 0);mem(w, 0);mem(d, -1);mem(line, 0);for(int i=0; i<maxn; i++) G[i].clear();
}int dp(int u)
{int& ans = d[u];if(ans >= 0) return ans;ans = w[u];      //最后一个点后边就没有点了for(int i=1; i<=scc_cnt; i++)if(u != i && line[u][i])ans = max(ans, dp(i) + w[u]);return ans;
}int main()
{int T;scanf("%d", &T);while(T--){init();int n, m;scanf("%d%d", &n, &m);for(int i=1; i<=m; i++){int u, v;scanf("%d%d", &u, &v);G[u].push_back(v);}for(int i=1; i<=n; i++)if(!pre[i])dfs(i);for(int i=1; i<=n; i++){w[sccno[i]]++;   //统计每个强连通分量里的点的个数for(int j=0; j<G[i].size(); j++)line[sccno[i]][sccno[G[i][j]]] = 1;}int res = 0;for(int i=1; i<=scc_cnt; i++)  // 以每一个点为起点 去找最长路res = max(res, dp(i));printf("%d\n", res);}return 0;
}

转载于:https://www.cnblogs.com/WTSRUVF/p/9361833.html

The Largest Clique UVA - 11324( 强连通分量 + dp最长路)相关推荐

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

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

  2. LRJ白书图论 11324 - The Largest Clique uva

    /*题意:给一张有向图,求这样的一个点集,使得集合中的点u,v,u->v,or v->u,or,u<->v.对图缩点,构造一张DAG.在DAG上作dp最长路.点权为每个强连通分 ...

  3. UVa 10066 Twin Towers (DP 最长公共子序列)

    题意  求两串数字最长公共子序列的长度 裸的lcs没啥说的 #include<cstdio> #include<cstring> #include<algorithm&g ...

  4. UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索

    题意:给出几个多维的箱子,如果箱子的每一边都小于另一个箱子的对应边,那就称这个箱子小于另一个箱子,然后要求能够套出的最多的箱子. 要注意的是关系图的构建,对箱子的边排序,如果分别都小于另一个箱子就说明 ...

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

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

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

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

  7. P3387 【模板】缩点 Tarjan强连通分量/树上dp

    P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 首先,什么是强连通分量 极大强连通子图 叫做强连通分量             首先要明确,         ...

  8. Uva 247 - Calling Circles(传递闭包 / 强连通分量)

    题目链接 https://vjudge.net/problem/UVA-247 [题意] 如果两个人直接或间接互相打电话,则说明他们在同一个电话圈里.例如a打给b,b打给c,c打给d,d打给a,则这4 ...

  9. UVA 11504 Dominos 强连通分量

    找出强连通分量,缩点后统计入度为0的结点数. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include& ...

最新文章

  1. docker 安装vim
  2. QEMU使用手册 - 1概述
  3. Hadoop实战 -- IO
  4. 细水长flow之NICE:流模型的基本概念与实现
  5. day63-webservice 08.在web项目中配置带有接口的webservice服务
  6. [zz]linux修改密码出现Authentication token manipulation error的解决办法
  7. 第六次作业:结对项目之需求分析与原型设计
  8. Vue使用ajax或者axios获取数据,能获取到数据但是页面没有更新
  9. Linux标准化:避免重蹈UNIX的覆辙
  10. 富士通Fujitsu DPK750 Pro 打印机驱动
  11. 根据投资回报率(ROI)进行决策
  12. (翻译)线框图和设计原型图之间的区别是什么?
  13. 软件是指示计算机运行所需的程序,计算机基础知识A.ppt
  14. JAVA编程学习记录(内部类)
  15. GRU和LSTM的单元结构
  16. 1788 数量的类模板
  17. 搜索引擎使用的一些基本技巧
  18. java中使用ajax请求数据格式化,ajax请求服务器返回json数据格式化
  19. 学习管理!!中国历史上最经典的7个智慧案例
  20. 清华梦的粉碎——写给清华大学的退学申请by王垠

热门文章

  1. hadoop2.6.4 在ubuntu14.04下的搭建
  2. python自关联_django自关联,auth模块
  3. mysql v7.11_编译后MySQL v5.7.11安装出错
  4. php 数组按个数分组,如何在PHP中基于内部数组键对数组进行分组?
  5. java webservice ssl_[转贴]Java客户端调用Https Webservice
  6. 卡尔曼滤波(kalman filter)
  7. java 获取年 两位,java使用jxl读取日期年份只显示前两位的解决方法
  8. windows下的工具链 树莓派_Windows下交叉编译Qt 5.14.2至树莓派平台 QEMU模拟树莓派...
  9. 1命名规则 sentinel_SpringCloud Gateway高阶之Sentinel限流、熔断
  10. GP学习(三)—How to run a geoprocessing tool