模板题调一个多小时还出现读入问题,救救孩子吧……
查看原帖
模板题调一个多小时还出现读入问题,救救孩子吧……
848391
fantastic_dream楼主2023/6/17 23:31

以下代码读入以下数据无法输出,是为什么呢

3 0 1

code:

#include<bits/stdc++.h>
using namespace std;
long long n,m,s,dis[100005],head[100005],cnt=0,a,b,c;
struct Edge{
	long long v,w,next;
}ed[500005];
bool vi[100005]={0};
void add(int u,int v,int l){
	cnt++;
	ed[cnt].v=v;
	ed[cnt].w=l;
	ed[cnt].next=head[u];
	head[u]=cnt;	
	return ;
}
void dij(){	
	for(int i=1;i<=n-1;i++){
		long long now=0,zx=INT_MAX;
		for(int j=1;j<=n;j++){
			if(j!=s&&!vi[j]&&dis[j]<zx){
				now=j;
				zx=dis[j];
				
			}
		}
		vi[now]=1;
		for(int j=head[now];j!=-1;j=ed[j].next){
			if(!vi[ed[j].v]&&ed[j].w+zx<dis[ed[j].v])	dis[ed[j].v]=ed[j].w+zx;				
		}		
	}
	return;
}
int main(){
	ios::sync_with_stdio(0);
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++)	head[i]=-1,dis[i]=INT_MAX;
	for(int i=0;i<m;i++){
		cin>>a>>b>>c;
		add(a,b,c);
		if(a==s&&b!=s)	dis[b]=min(dis[b],c);
	}
	dij();
	dis[s]=0;
	for(int i=1;i<=n;i++){
		cout<<dis[i]<<" ";
	}
	return 0;
}

帮忙调下谢谢啦

2023/6/17 23:31
加载中...