我还有救吗
#include<bits/stdc++.h>
using namespace std;
const int qp=10001;
vector<int>a[qp];
int vis[qp]={0},in[qp]={0},out[qp]={0},ti[qp]={0},dis[qp]={0};
int n,m;
void dfs(int x)
{
vis[x]=1;
for(int i=0;i<a[x].size();i++)
{
in[a[x][i]]--;
if(dis[x]+ti[a[x][i]]>dis[a[x][i]])
{
dis[a[x][i]]=dis[x]+ti[a[x][i]];
}
if(in[a[x][i]]==0) dfs(a[x][i]);
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int d,pre;
cin>>d>>ti[d];
while(true)
{
scanf("%d%d",&pre);
if(pre==0) break;
else
{
a[pre].push_back(d);
out[pre]++;
in[d]++;
}
}
}
for(int i=1;i<=n;i++)
{
if(in[i]==0 and vis[i]!=1)
{
dis[i]=ti[i];
dfs(i);
}
}
cout<<*max_element(dis+1,dis+1+n);
return 0;
}