AcWing 周赛13 3813. 最大路径权值(拓扑排序 DAG上dp)

简介: AcWing 周赛13 3813. 最大路径权值(拓扑排序 DAG上dp)

原题链接

题意:

思路:

51nod的强化版

由于题目中存在环,对于环上的字母来说,每个字母都会出现无穷次,所以答案为i n f,输出− 1

如果不存在环,该图就是一个D A G,枚举每个字母,拓扑排序后用d p求解这个字母出现的最多次数就好。

判环的话:如果t o p s o r t 后仍有字母的入度> 0,说明有环。

代码:

const int maxn=3e5+100;
vector<int>g[maxn];
int n,m,dp[maxn][28],din[maxn];
char s[maxn];
int topsort(){
  queue<int>q;
  int siz=0;
  rep(i,1,n)
    if(din[i]==0){
      q.push(i);
      dp[i][s[i]-'a']=1;
      siz++;
    }
  while(!q.empty()){
    int t=q.front();q.pop();
    for(auto v:g[t]){
      rep(i,0,25){
        int tt=0;
        if(i==s[v]-'a') tt++;
        dp[v][i]=max(dp[v][i],dp[t][i]+tt);
      }
      if(--din[v]==0) q.push(v),siz++;
    }
  }
  rep(i,1,n)
      if(din[i]>0) return -1;
  int ans=0;
  rep(i,1,n)
    if(g[i].size()==0){
      rep(j,0,25) ans=max(ans,dp[i][j]);
    }
  return ans;
}
int main(){
  n=read,m=read;
  scanf("%s",s+1);
  rep(i,1,m){
    int u=read,v=read;
    din[v]++;
    g[u].push_back(v);
  }
  cout<<topsort();
  return 0;
}
目录
相关文章
|
算法
代码随想录 Day26 贪心 01 全集 LeetCode455 分发饼干 LeetCodeT346摆动序列 LeetCdoe T53 最大子数组和
代码随想录 Day26 贪心 01 全集 LeetCode455 分发饼干 LeetCodeT346摆动序列 LeetCdoe T53 最大子数组和
47 0
|
7月前
|
搜索推荐 Java
单源最短路(只有一个起点)bfs,多源BFS,目录力扣675.为高尔夫比赛砍树,多源最短路问题:力扣542.01矩阵力扣1020.飞地的数量
单源最短路(只有一个起点)bfs,多源BFS,目录力扣675.为高尔夫比赛砍树,多源最短路问题:力扣542.01矩阵力扣1020.飞地的数量
|
机器学习/深度学习 存储 算法
【DFS经典例题】2n皇后问题
【DFS经典例题】2n皇后问题
84 0
|
8月前
|
NoSQL 容器 消息中间件
图、图的遍历及图的拓扑排序
图、图的遍历及图的拓扑排序
|
算法
代码随想录算法训练营第十八天 | 力扣 513. 找树左下角的值、112. 路径总和、113. 路径总和 II、106. 从中序与后序遍历序列构造二叉树、105. 从前序与中序遍历序列构造二叉树
代码随想录算法训练营第十八天 | 力扣 513. 找树左下角的值、112. 路径总和、113. 路径总和 II、106. 从中序与后序遍历序列构造二叉树、105. 从前序与中序遍历序列构造二叉树
60 0
|
存储 算法
图的广度优先遍历和深度优先遍历
本文主要是学习图的广度优先遍历和图的深度优先遍历
209 1
|
存储 索引
树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次
树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次
84 0
|
人工智能 算法 BI
LeetCode 周赛 341 场,模拟 / 树上差分 / Tarjan 离线 LCA / DFS
上周末有单双周赛,双周赛我们讲过了,单周赛那天早上有事没参加,后面做了虚拟竞赛,然后整个人就不好了。前 3 题非常简单,但第 4 题有点东西啊,差点就放弃了。最后,被折磨了一个下午和一个大夜总算把第 4 题做出来了,除了新学的 Tarjon 离线算法,这道题还涉及到树上差分、前缀和、DFS、图论等基础知识,几度被折磨得想要放弃。这种感觉,似乎和当年在 LeetCode 上做前 10 题的时候差不多哈哈。
93 0
每日三题-最大子数组和、不同路径、最小路径和
每日三题-最大子数组和、不同路径、最小路径和
77 0
每日三题-最大子数组和、不同路径、最小路径和

热门文章

最新文章