洛谷1983(DAG上最长路)
来源:互联网 发布:java 蓝牙通信协议 编辑:程序博客网 时间:2024/05/16 02:38
传送门
停车点连向不停车点,重复的边只连一次,最后求一个DAG(有向无环图)上最长路即可。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cstdlib>using namespace std;const int maxn=1002;int n,m;int head[maxn],edge;struct EDGE { int v,nxt;}e[maxn*maxn];int vis[maxn][maxn],t[maxn];inline int read() { int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar(); return x*f;}inline void adde(int u,int v) { e[edge].v=v,e[edge].nxt=head[u],head[u]=edge++;}int f[maxn];int dfs(int p) { for (int i=head[p];~i;i=e[i].nxt) { int v=e[i].v; f[p]=max(f[p],f[v]?f[v]:f[v]=dfs(v)); } return ++f[p];}int main() {// freopen("P1983.in","r",stdin); while (~scanf("%d%d",&n,&m)) { memset(t,0,sizeof(t)); memset(vis,0,sizeof(vis)); memset(f,0,sizeof(f)); memset(head,-1,sizeof(head)),edge=0; while (m--) { int num=read(); for (int i=1;i<=num;++i) t[i]=read(); int s=1; for (int i=t[1];i<t[num];++i) if (t[s]==i) ++s; else for (int j=1;j<=num;++j) if (!vis[t[j]][i]) vis[t[j]][i]=1,adde(t[j],i); } int res=0; for (int i=1;i<=n;++i) if (!f[i]) res=max(res,f[i]=dfs(i)); printf("%d\n",res); } return 0;}
阅读全文
0 0
- 洛谷1983(DAG上最长路)
- DAG(递归实现最长路)
- uva 437 (dag 最长路)
- 挖地雷问题(DAG最长路)
- poj1949 DAG 最长路
- uva437 DAG最长路
- Codeforces Round #261 (Div. 2)E题(DP:DAG上的最长路)
- UVA 437 The Tower of Babylon (DAG上的无源最长路 or LIS)
- UVA 103 Stacking Boxes(DAG 上的最长路及其字典序输出)
- nyoj 10 skiing(DAG上的最长路,备忘录方法)
- 强连通分量,DAG上的最长路,记忆化搜索(最大团,UVA 11324)
- nyoj 79拦截导弹 (DAG上的最长路问题)简单dp
- UVa:10000 Longest Paths (DAG上的最长路)
- hdu 4109 Instrction Arrangement【DAG图上的最长路】
- NYoj 16 矩形嵌套 (DAG上最长路
- UVA 437 DAG最长路
- 求DAG最长路 板子
- uva 10131 Is Bigger Smarter?(DAG最长路)
- java 环境变量的配置
- 1019. General Palindromic Number (20)
- 2017.8.1暑假集训第二天(下午训练赛)
- Tensorflow学习笔记(2)-基本运算
- 七月小结
- 洛谷1983(DAG上最长路)
- 中国剩余定理介绍
- 自动驾驶的技术架构和生态发展
- 4349: 最小树形图
- 2017暑假集训第二天
- G
- 1023. Have Fun with Numbers (20)
- 运维——Linux防火墙iptables语法详解
- linux编程——I/O操作之文件基本读写