题意:一个有向图,每个结点 被赋予一个小写字母,一条路径的value等与这条路径上出现次数最多的字母的数目,求该图的最大value

比赛时,用dfs超时,看官方题解用的dp和拓扑排序,a--z用0-25表示,用dp[i][j]表示以第i个结点结尾的路径上第j个字母出现的次数

拓扑排序每排到一个点,就用该点的dp去更新与它相邻点的dp,最开始入度为0的点特殊处理了一下,dp过程中同步更新结果res

也复习了一下拓扑排序

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
#define Nnum 300005 char ch[Nnum];
int dp[Nnum][]; vector<int> eage[Nnum];
int deg[Nnum];
int n,m,res;
bool deg0[Nnum]; bool toposort()
{
int cnt=;
queue<int> que;
for(int i=; i<=n; i++)
if(deg[i]==)
{
cnt++;
que.push(i);
deg0[i]=;
}
else
deg0[i]=;
while(!que.empty())
{
int now=que.front();
que.pop();
if(deg0[now]==) //最初入度为0的点,其dp需附上初值,再更新相邻结点
dp[now][ch[now-]-'a']++;
for(int i=; i<eage[now].size(); i++)
{
for(int j=; j<; j++)
{
int tmp=ch[eage[now][i]-]-'a';
if(j==tmp)
dp[eage[now][i]][tmp]=max(dp[eage[now][i]][tmp],dp[now][tmp]+);
else
dp[eage[now][i]][j]=max(dp[eage[now][i]][j],dp[now][j]);
res=max(res,dp[eage[now][i]][j]);
}
//cout<<"*"<<res<<endl;
deg[eage[now][i]]--;
if(deg[eage[now][i]]==)
{
que.push(eage[now][i]);
cnt++;
}
}
}
if(cnt==n)
return ;
else
return ;
} int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<=n;i++)
eage[i].clear();
res=;
memset(deg,,sizeof(deg));
memset(dp,,sizeof(dp));
scanf("%s",ch);
for(int i=; i<m; i++)
{
int a,b;
scanf("%d%d",&a,&b);
deg[b]++;
eage[a].push_back(b);
}
if(toposort())
printf("%d\n",res);
else
printf("-1\n");
}
return ;
}

最新文章

  1. [BZOJ1014][JSOI2008]火星人prefix
  2. CentOS 6.5下Redis安装记录
  3. 最简单的JavaScript模板引擎
  4. Intellij IDEA中的Mybatis Plugin破解
  5. contiki-进程
  6. Memcached启停脚本小结
  7. sqlserver总结-视图及存储过程
  8. UVa11054 Gergovia的酒交易 Wine trading in Gergovia-递推
  9. C#解析.msg文件(outlook文件)
  10. android中常用的弹出提示框
  11. 重复数据插入unique列时,锁加在哪?
  12. JavaScript之数组学习
  13. windows 2008 开机启动 Docker Toolbox 并运行容器
  14. 36.QT-解决无边框界面拖动卡屏问题(附带源码)
  15. iOS进阶之TCP代理鉴权过程
  16. TensorFlow遇到的问题汇总(持续更新中......)
  17. ethereumjs/ethereumjs-util
  18. 红楼梦3d游戏
  19. Xshell6远程访问linux及Xftp6远程针对linux系统中文件操作(附图文详解)
  20. JAVA之路(二)

热门文章

  1. js的location对象
  2. jQuery - AJAX 级联变动
  3. java代码实现JDBC连接MySql以及引用驱动程序包
  4. BZOJ_3998_[TJOI2015]弦论_后缀自动机
  5. 杂项:IntelliJ IDEA
  6. bzoj4720
  7. [转]响应式web设计之CSS3 Media Queries
  8. Codeforces Round #409(Div.2)
  9. 洛谷 P3732 [HAOI2017]供给侧改革【trie树】
  10. CentOS 6.2 X64上64位Oracle11gR2 静默安装,静默设置监听,静默建库经验