zoukankan      html  css  js  c++  java
  • 洛谷 P5145 漂浮的鸭子(拓扑排序||最大环)

    题目链接:https://www.luogu.com.cn/problem/P5145

    用拓扑排序,将能在拓扑队列中的所有点删掉,即这些点不能在环中,判环。

    然后找出在环中的点,进行DFS,搜一遍环看它的sum,取max

    AC代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<queue>
     6 using namespace std;
     7 const int N=100005;
     8 int head[N],in[N],c[N],vis[N];
     9 int tot,n,ans,cnt,sum;
    10 queue<int> q;
    11 struct node{
    12     int next,to,w;
    13 }edge[N];
    14 void add(int u,int v,int w){
    15     edge[tot].next=head[u];
    16     edge[tot].to=v;
    17     edge[tot].w=w;
    18     head[u]=tot++;
    19 }
    20 void toposort(){
    21     for(int i=1;i<=n;i++) if(in[i]==0) {
    22         q.push(i);
    23         c[i]=0;
    24     }
    25     while(!q.empty()){
    26         int u=q.front(); q.pop();
    27         for(int i=head[u];i!=-1;i=edge[i].next){
    28             int v=edge[i].to;
    29             in[v]--;
    30             if(in[v]==0) {
    31                 q.push(v);
    32                 c[v]=0;
    33             }
    34         }
    35     }
    36 }
    37 void DFS(int s){
    38     for(int i=head[s];i!=-1;i=edge[i].next){
    39         int v=edge[i].to;
    40         if(vis[v]==1) {
    41             ans=max(ans,sum);
    42             return;
    43         }
    44         sum+=edge[i].w;
    45         vis[v]=1;
    46         DFS(v);
    47     }
    48 }
    49 int main(){
    50     memset(head,-1,sizeof(head));
    51     memset(c,1,sizeof(c));
    52     scanf("%d",&n);
    53     for(int i=1;i<=n;i++){
    54         int d,t;
    55         scanf("%d%d",&d,&t);
    56         add(i,d,t);
    57         in[d]++;
    58     }
    59     toposort();
    60     for(int i=1;i<=n;i++){
    61         sum=0;
    62         if(c[i]&&!vis[i]){
    63             DFS(i);
    64         }
    65     }
    66     printf("%d",ans);
    67     return 0;
    68 }
    AC代码
  • 相关阅读:
    Kubernetes之(四)kubeadm部署集群
    Kubernetes之(三)核心组件ETCD介绍
    Kubernetes之(二)核⼼技术概念和API对象
    Kubetnetes之(一)基础介绍
    docker入门基础(六)
    docker入门基础(八)
    docker入门基础(七)
    docker入门基础(五)
    docker入门基础(四)
    docker入门基础(三)
  • 原文地址:https://www.cnblogs.com/New-ljx/p/13583630.html
Copyright © 2011-2022 走看看