求助万能的dalao们
  • 板块P1113 杂务
  • 楼主Cilivan
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/3/26 15:29
  • 上次更新2023/10/28 05:34:08
查看原帖
求助万能的dalao们
374196
Cilivan楼主2022/3/26 15:29

我还有救吗

#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;
}
2022/3/26 15:29
加载中...