全都输出无解?
  • 板块P1260 工程规划
  • 楼主_lqs_
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/1/21 20:44
  • 上次更新2023/10/24 03:24:04
查看原帖
全都输出无解?
664744
_lqs_楼主2023/1/21 20:44

代码全都显示无解......

#include<bits/stdc++.h>
using namespace std;
#define N 5005
int n,m,i,j,ans;
int dis[N],h[N],u[N],cnt[N],q[N*30],Min=1e9;
int a,b,c,k,p,y,t;
struct AB{
	int a,b,c,n;
}d[N+N];
void cun(int a,int b,int c){
	d[++k].a=a,d[k].b=b,d[k].c=c;
	d[k].n=h[a],h[a]=k;
} 
int main(){
	scanf("%d%d",&n,&m);
	for(i=1;i<=m;i++){
		scanf("%d%d%d",&a,&b,&c);
		cun(b,a,c);
	}
	for(i=1;i<=n;i++) cun(0,i,0);
	memset(dis,0x3f,sizeof(dis));
	dis[0]=0,q[1]=0;
	for(y=t=1;y<=t;y++){
		a=q[y];
		u[a]=0;
		for(int i=h[a];i;i=d[i].n){
			b=d[i].b,c=d[i].c;
			cnt[b]++;
			if(cnt[b]>n+1){
				printf("NO SOLUTION");
				return 0;
			}
			if(dis[b]>dis[a]+c){
				dis[b]=dis[a]+c;
				if(u[b]==0) u[b]=1,q[++t]=b;
			}
		}
	}
	for(i=1;i<=n;i++) Min=min(Min,dis[i]);
	for(i=1;i<=n;i++) printf("%d\n",dis[i]-Min);
	return 0;
}
2023/1/21 20:44
加载中...