10分求助
  • 板块P2648 赚钱
  • 楼主_Empty
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/1/1 08:38
  • 上次更新2023/11/5 05:24:12
查看原帖
10分求助
379940
_Empty楼主2021/1/1 08:38

RT

#include<bits/stdc++.h>
using namespace std;
struct node{
	int u,v,w;
}e[999];
int qq,pp,cc,ff,uu[3105],sth[305],sto[305],as=0;
bool edda[305];
void d3(int u,int v,int w)
{
	e[as++].u=v;
	e[as].v=w;
	e[as].w=sto[u];
	sto[u]=as;
}
bool d2()
{
	memset(uu,0x3f,sizeof(uu));
	queue<int>q;
	q.push(0);
	uu[0]=0;
	edda[0]=1;
	while(!q.empty())
	{
		int u=q.front();
		q.pop();
		edda[u]=0;
		sth[u]++;
		if(sth[u]>cc+1) return 1;
		for(int i=sto[u];i;i=e[i].w)
		{
			int v=e[i].u;
			if(uu[v]>uu[u]+e[i].v)
			{
				uu[v]=uu[u]+e[i].v;
				if(!edda[v]) edda[v]=1,q.push(v);
			}
		}
	}
	return 0;
}
int main()
{
	cin>>qq>>pp>>cc>>ff;
	int u,v,w;
	for(int i=1;i<=pp;i++)   cin>>u>>v,d3(u,v,-qq);
	for(int i=1;i<=ff;i++)   cin>>u>>v>>w,d3(u,v,-qq);
	for(int i=1;i<=cc;i++)   d3(0,i,-qq);
	if(d2()) cout<<"orz";
	else 
	{
		int ans=0;
		for(int i=1;i<=cc;i++) ans=min(ans,uu[i]);
		cout<<-ans;
	}
	return 0;
}
2021/1/1 08:38
加载中...