为什么MLE了?求调,悬赏一个关注
查看原帖
为什么MLE了?求调,悬赏一个关注
559506
BestFriend楼主2022/12/7 12:19

前面两个点AC,后面全MLE。

#include<bits/stdc++.h>
#define re register long long
using namespace std;
const int N=2e5+7;
typedef long long ll;
ll n,s[N],d[N],vis[N];
vector<ll> g[N],r[N];
queue<ll> q;
inline void spfa(){
	for(re i=1;i<=n;i++){
		q.push(i);
	}
	memset(vis,1,sizeof(vis));
	while(!q.empty()){
		int u=q.front();
		int t=s[u];
		q.pop();
		vis[u]=0;
		for(re i=0;i<g[u].size();i++){
			int v=g[u][i];
			t+=d[v];
		}
		if(t<d[u]){
			d[u]=t;
			for(re i=0;i<r[u].size();i++){
				int v=r[u][i];
				if(!vis[v]){
					q.push(v);
					vis[v]=1;
				}
			}
		}
	}
	printf("%d\n",d[1]);
	return ;
}
int main(){
	scanf("%lld",&n);
	ll number,t;
	for(re i=1;i<=n;i++){
		scanf("%lld%lld",&s[i],&d[i]);
		scanf("%lld",&number);
		while(number--){
			scanf("%lld",&t);
			g[i].push_back(t);
			r[t].push_back(i);
		}
	}
	spfa();
	return 0;
} 
2022/12/7 12:19
加载中...