zoukankan      html  css  js  c++  java
  • P5145 漂浮的鸭子

    题目链接Miku

    dfs每个点找环,但是要有一些特殊改造

    标记每一个点需要在找完了之后标记


    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<stack>
    using namespace std;
    long long n;
    struct e{
    	long long f;
    	long long t;
    	long long ne;
    	long long v;
    }ed[100001];
    long long u,v;
    stack <long long>s;
    long long vis[1000001];
    long long head[1000001];
    long long p;
    long long ans;
    long long len;
    long long i;
    long long tim[1000001];
    long long sum[1000001];
    void add(long long f,long long to,long long v){
    	p++;
    	ed[p].f=f;
    	ed[p].t=to;
    	ed[p].ne=head[f];
    	ed[p].v=v;
    	head[f]=p;
    }
    long long cnt;
    int j;
    void shanchu(int u){
    	
    }
    void dfs(long long now,long long t){
    	//cout<<now<<endl;
    	 if(vis[now])
    	 return ;
    	if(tim[now]!=0){
    		ans=max(ans,sum[t]-sum[tim[now]]);
    		return ;
    	}
    	tim[now]=t;
    	for(long long i=head[now];i;i=ed[i].ne){
    		sum[t+1]=sum[t]+ed[i].v;
    		dfs(ed[i].t,t+1);
    	}
    	vis[now]=1;
    	return ;
    }
    int main(){
    	scanf("%lld",&n);
    	for(long long i=1;i<=n;++i){
    		scanf("%lld%lld",&u,&v);
    		add(i,u,v); 
    	}
    	for(long long i=1;i<=n;++i){
    	//	memset(sum,0,sizeof(sum));
    		//if(!tim[i])
    			dfs(i,0); 
    	} 
    	cout<<ans;
    	return 0;
    } 
    
  • 相关阅读:
    UVa 11181
    UVa 10491
    UVa 1636
    UVa 1262
    UVa 10820
    UVa 1635
    UVa 12716
    [2019杭电多校第六场][hdu6635]Nonsense Time
    [2019杭电多校第五场][hdu6630]permutation 2
    [2019杭电多校第五场][hdu6629]string matching(扩展kmp)
  • 原文地址:https://www.cnblogs.com/For-Miku/p/13579971.html
Copyright © 2011-2022 走看看