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;
}
目录
相关文章
|
1月前
|
算法 测试技术
【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径
【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径
|
23天前
|
搜索推荐 Java
单源最短路(只有一个起点)bfs,多源BFS,目录力扣675.为高尔夫比赛砍树,多源最短路问题:力扣542.01矩阵力扣1020.飞地的数量
单源最短路(只有一个起点)bfs,多源BFS,目录力扣675.为高尔夫比赛砍树,多源最短路问题:力扣542.01矩阵力扣1020.飞地的数量
|
1月前
|
人工智能 算法
一些算法的复习(最短路径、最小生成树、dp)
一些算法的复习(最短路径、最小生成树、dp)
|
11月前
|
存储 索引
树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次
树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次
55 0
|
算法 机器人 C++
数据结构与算法之最短路路径与最短路径和&&动态规划
数据结构与算法之最短路路径与最短路径和&&动态规划
228 0
数据结构与算法之最短路路径与最短路径和&&动态规划
|
存储
【每日一题Day61】寻找图中是否存在路径 | BFS 并查集
初始时将source设为已访问,并且将其加入队列。之后每次将队列中的节点出队,并将其能够到达的未访问过的节点入队。如果访问到destination,则直接返回true;如果队列为空,仍未访问到destination,则返回false
97 0
每日三题-最大子数组和、不同路径、最小路径和
每日三题-最大子数组和、不同路径、最小路径和
53 0
每日三题-最大子数组和、不同路径、最小路径和
|
存储 算法
LeetCode 435. 无重叠区间(贪心算法,动态规划)
LeetCode 435. 无重叠区间(贪心算法,动态规划)
104 0
LeetCode 435. 无重叠区间(贪心算法,动态规划)
|
存储 算法 C语言
6-1 最小生成树(普里姆算法) (10分)
6-1 最小生成树(普里姆算法) (10分)
6-1 最小生成树(普里姆算法) (10分)
|
算法 机器人 定位技术
【牛客刷题-算法】NC34 不同路径的数目(一) | 动态规划、组合数解法
【牛客刷题-算法】NC34 不同路径的数目(一) | 动态规划、组合数解法
96 0
【牛客刷题-算法】NC34 不同路径的数目(一) | 动态规划、组合数解法