80分求调,好人一生平安! 一TLE,一WA(链式前向星)
  • 板块P1113 杂务
  • 楼主zhangjiaye1
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/29 20:08
  • 上次更新2025/7/30 09:57:25
查看原帖
80分求调,好人一生平安! 一TLE,一WA(链式前向星)
1003202
zhangjiaye1楼主2025/7/29 20:08
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e4 + 5;
int n,m,rask[N],indegree[N],line[N];
int head[N],nexts[N],to[N],cnt=1;
void add(int x,int y){
	nexts[cnt]=head[x];
	to[cnt]=y;
	head[x]=cnt++;
}
void tuopu(){
	int q[N],l=0,r=0,ans=0;
	for(int i=1;i<=n;i++){
		if(indegree[i]==0){
			q[r++]=i;
			line[i]=rask[i];
		}
	}
	while(l<r){
		int cur=q[l++];
		if(head[cur]==0) ans=max(ans,line[cur]);
		for(int i=head[cur];i>0;i=nexts[i]){
			line[to[i]]=max(line[to[i]],line[cur]+rask[to[i]]);
			if(--indegree[to[i]]==0){
				q[r++]=to[i];
			}
		}
	}
	cout<<ans;
}
int main(){
    cin>>n;
    int num,x;
    for(int i=1;i<=n;i++){
    	cin>>num;
    	cin>>rask[num];
		cin>>x;
		while(x!=0){
			add(x,num);
		    indegree[num]++;
			cin>>x;
		} 
	}
	tuopu();
    return 0;
}

2025/7/29 20:08
加载中...