90 求调
查看原帖
90 求调
1490150
miller2014楼主2025/1/17 16:19

代码如下:

#include<bits/stdc++.h>
using namespace std;
long long n,t,m,s,ss,dis[100005],is_q[100005],cnt[100005];
bool bbb=true;
struct eee
{
	long long v,c;
};
vector<eee> e[100005];
void spfa()
{
	memset(cnt,0,sizeof(cnt));
	memset(is_q,0,sizeof(is_q));
	queue < int> q;
	q.push(s);
	is_q[s]=1;
	dis[s]=0;
	while(q.size())
	{
		long long u=q.front();
		q.pop();
		is_q[u]=0;
		for(long long i=0;i<e[u].size();i++)
		{
			long long v=e[u][i].v,c=e[u][i].c;
			if(dis[v]>dis[u]+c)
			{
				dis[v]=dis[u]+c;
				if(is_q[v]==0)
				{
					cnt[v]++;
					if(cnt[v]>=n)
					{
						cout<<"No"<<endl;
						exit(0);
					}
					q.push(v);
					is_q[v]=1;
				}
			}
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)e[i].clear();
	for(long long t=1;t<=n;t++)if(t!=s)dis[t]=2147483647;
	for(long long i=1;i<=m;i++)
	{
		int op;
		long long u,v;
		cin>>op;
		if(op==3)
		{
			cin>>u>>v;
			e[v].push_back(eee{u,0});
			e[u].push_back(eee{v,0});
		}
		else
		{
			long long w;
			cin>>u>>v>>w;
			if(op==1)e[u].push_back(eee{v,-w});
			else e[v].push_back(eee{u,-w});
		}
	}
	for(int i=1;i<=n;i++)
		e[s].push_back({i,0});
	bbb=true;
	spfa();
	cout<<"Yes"<<endl;
	return 0;
}

测评状态如下:

#1 AC

#2 AC

#3 AC

#4 AC

#5 AC

#6 AC

#7 AC

#8 AC

#9 AC

#10 AC

#11 AC

#12 WA read 'N'

#13 AC

#14 AC

#15 AC

#16 AC

#17 AC

#18 AC

#19 AC

#20 AC

#21 AC

#22 AC

#23 AC

#24 AC

#25 AC

#26 AC

#27 AC

#28 AC

#29 AC

#30 WA read 'N'

2025/1/17 16:19
加载中...