20分求助

P1113 杂务

@[geyiyang001](/user/753241) ```cpp #include<bits/stdc++.h> #define N 10005 using namespace std; queue<int>q; int cost[N],et[N],ans; int n,id,ct,v; vector<int>g[N]; int rudu[N]; void tuopu(){ for(int i=1;i<=n;i++){ if(rudu[i]==0){ q.push(i); et[i]=cost[i]; } } while(!q.empty()){ int u=q.front(); q.pop(); for(int i=0;i<g[u].size();i++){ int v=g[u][i]; rudu[v]--; et[v]=max(et[v],et[u]+cost[v]); if(rudu[v]==0){ q.push(v); } } } } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d %d",&id,&ct); cost[id]=ct; while(cin>>v&&v!=0){ g[id].push_back(v); rudu[v]++; } } tuopu(); for(int i=1;i<=n;i++){ ans=max(ans,et[i]); } printf("%d",ans); return 0; } ```
by jiadahao @ 2024-03-24 11:04:16


已A,谢谢
by ge_yiyang_001_DT @ 2024-03-24 12:17:48


|