Spring-12-spring整合Mybatis
阿新 • • 發佈:2020-08-28
題目連結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; }