AC但疑惑
  • 板块P1113 杂务
  • 楼主pagepage
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/8/30 09:50
  • 上次更新2025/8/30 16:02:21
查看原帖
AC但疑惑
1742178
pagepage楼主2025/8/30 09:50
#include<bits/stdc++.h>
using namespace std;
int n,m;
int o[10005];
vector<int>g[10005];
int d[10005];
int ans[10005];
bool topu(){
	queue<int>q;
	for(int i=1;i<=n;i++){
		if(d[i]==0)q.push(i);
	}
	int cnt=0;
	while(!q.empty()){
		int p=q.front();
		q.pop();
		cnt++;
		ans[cnt]=p;
		for(auto t:g[p]){
			d[t]--;
			if(d[t]==0)q.push(t);
		}
	}
	return cnt==n;
}
int dis[10005];
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		int hh,len;
		cin>>hh>>len;
		o[hh]=len;
		int c;
		cin>>c;
		while(c!=0){
			g[c].push_back(hh);
			d[hh]++;//*这里*
			cin>>c;
		}
	}
	topu();
	dis[ans[1]]=o[ans[1]];
	for(int i=1;i<=n;i++){
		int u=ans[i];
		for(auto v:g[u]){
			dis[v]=max(dis[v],dis[u]+o[v]);
		}
	}
	int time=0;
	for(int i=1;i<=n;i++){
		time=max(time,dis[i]);
	}
	cout<<time;
	return 0;
}

第40行代码为什么注释掉了也能AC?

ac记录

2025/8/30 09:50
加载中...