悬关求调,hack全对但0分
查看原帖
悬关求调,hack全对但0分
658305
zgzn楼主2024/8/19 11:23

我怀疑是vector清空没写对,导致多测出错。但我没有证据。

#include<bits/stdc++.h>
using namespace std;
struct note{
	int v,w;
};
int t,n,m,x,y,z,u,dis[2001],cnt[2001];bool vis[2001];
vector<note>e[2001];
queue<int>dl;
bool spfa(int s)
{
	dis[s]=0,vis[s]=1,dl.push(s);
	while(!dl.empty())
	{
		u=dl.front(),dl.pop(),vis[u]=0;
		for(auto i:e[u])
			if(dis[i.v]>dis[u]+i.w)
			{
				dis[i.v]=dis[u]+i.w,cnt[i.v]=cnt[u]+1;
				if(cnt[i.v]>=n)
					return 1;
				if(vis[i.v]==0)
					vis[i.v]=1,dl.push(i.v);
			}
	}
	return 0;
}
int main()
{
	cin>>t;
	while(t--)
	{
		memset(dis,63,sizeof(dis));
		memset(cnt,0,sizeof(cnt));
		memset(vis,0,sizeof(vis));
		for(int i=1;i<2001;i++)
			e[i].clear();
		while(!dl.empty())
			dl.pop();
		cin>>n>>m;
		for(int i=1;i<=m;i++)
			cin>>x>>y>>z,e[x].push_back({y,z});
		if(spfa(1))
			cout<<"YES\n";
		else
			cout<<"NO\n";
	}
	return 0;
}
2024/8/19 11:23
加载中...