lelp me!
查看原帖
lelp me!
1299520
HYR00000楼主2024/12/24 13:35

蒟蒻刚刚写了亿下,但就是没过

想骗分

#include<bits/stdc++.h>
using namespace std;

int main(){
	cout<<"No";
}

但还是写了

#include<bits/stdc++.h>
using namespace std;

const int N=5.1e6;
int n,m,u,v,w,head[N],dis[N],cnt,vis[N],p[N],mmin=INT_MAX,x,flag,num[N];
struct Edge{
	int to,w,next;
}edge[N<<1];
void add(int u,int v,int w){
	edge[++cnt].to=v;
	edge[cnt].w=w;
	edge[cnt].next=head[u];
	head[u]=cnt;
}
bool spfa(){
	queue<int>q;
	q.push(0);
	vis[0]=1; 
	num[0]++;
	while(!q.empty()){
		flag++;
		if(flag>=1e6) 
		return 0;
		int u=q.front();
		q.pop();
		vis[u]=0;
		for(int i=head[u];i!=0;i=edge[i].next){
			int v=edge[i].to;
			if(dis[v]<dis[u]+edge[i].w){
				dis[v]=dis[u]+edge[i].w;
				if(vis[v]==0){
					q.push(v);
					vis[v]=1;
					num[v]++;
					if(num[v]>n){
						return 0;
					}
				}
			}
			
		}	
	}
	return 1;	
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>x;
		if(x==1){
			cin>>u>>v>>w;
			add(u,v,-w);	
		}
		if(x==2){
			cin>>u>>v>>w;
			add(v,u,w);
		}
		if(x==3){
			cin>>u>>v;
			add(u,v,0);
			add(v,u,0);
		}
	}
	for(int i=n;i>=1;i--){
		add(0,i,1);
	}
	if(spfa()){
		cout<<"Yes";
	}
	else{
		cout<<"No";
	}
} 

这怎么搞的

2024/12/24 13:35
加载中...