社区讨论

求调!!!

P2294[HNOI2005] 狡猾的商人参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lvwjbolf
此快照首次捕获于
2024/05/07 23:17
2 年前
此快照最后确认于
2024/05/08 15:57
2 年前
查看原帖

67pts WA on #6、7&9\textcolor{black}{\textrm{67pts WA on \#6、7\&9}}

Code:

CSHARP
#include<bits/stdc++.h>
#define il inline
#define rg register
#define int long long
using namespace std;

struct solution{

int n,m,in[3],cnt,he[2105],dis[105],vis[105];

bool inq[105];

struct Edge{
	int to,nxt,w;
}edge[2105];

il void add(rg int u,rg int v,rg int w){
	edge[++cnt]={v,he[u],w};
	he[u]=cnt;
}

il bool spfa(){
	dis[n+1]=0;
	rg queue<int>q;
	q.push(n+1);
	inq[n+1]=1;
	while(!q.empty()){
		rg int u=q.front();
		q.pop();
		inq[u]=0;
		if(vis[u]>n)
			return 0;
		for(rg int i=he[u];i;i=edge[i].nxt){
			rg int v=edge[i].to,w=edge[i].w;
			++vis[v];
			if(dis[u]+w<dis[v]){
				dis[v]=dis[u]+w;
				if(!inq[v]){
					inq[v]=1;
					q.push(v);
				}
				if(vis[v]>n)
					return 0;
			}
		}
	}
	return 1;
}

il void reset(){
	cnt=n=m=0;
	memset(in,0,sizeof(in));
	memset(he,0,sizeof(he));
	memset(vis,0,sizeof(vis));
	memset(inq,0,sizeof(inq));
	memset(edge,0,sizeof(edge));
	memset(dis,0x3f,sizeof(dis));
}

il int Main(){
	cin>>n>>m;
	for(rg int i=1;i<=m;++i){
		cin>>in[0]>>in[1]>>in[2];
		add(in[1],in[0]-1,in[2]);
		add(in[0]-1,in[1],-in[2]);
	}
	for(rg int i=1;i<=n;++i){
		add(n+1,i,0);
	}
	if(spfa())
		cout<<"true"<<endl;
	else
		cout<<"false"<<endl;
	return 0;
}

};

solution sdbsrnberhnsdvfd;

signed main(){
	rg int w;
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin>>w;
	while(w--){
		sdbsrnberhnsdvfd.reset();
		sdbsrnberhnsdvfd.Main();
	}
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...