前面两个点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;
}