求助
查看原帖
求助
853503
Ayk71200楼主2024/1/25 10:18
#include<bits/stdc++.h>
using namespace std;
int k=1,head[10005];
const long long INF=2147483647;
struct edge{
	int v,w,next;
}e[50001];

void add(int u,int v,int w){
	e[k].v=v;
	e[k].w=w;
	e[k].next=head[u];
	head[u]=k++;
}

int main(){
	queue<int> q;
	int n,m,s,u,v;
	long long w;
	int in[10005],dis[10005];
	memset(in,0,sizeof(in));
	memset(dis,INF,sizeof(dis));
		memset(head,0,sizeof(head));
	scanf("%d%d%d",&n,&m,&s);
	for(int i=1;i<=m;i++){
	scanf("%d%d%lld",&u,&v,&w);
	add(u,v,w);
	}
	dis[s]=0;
	q.push(s);
	while(!q.empty()){
	u=q.front();
	q.pop();
	for(int i=head[u];i;i=e[i].next){
	v=e[i].v;
	if(dis[v]>dis[u]+e[i].w){
		dis[v]=dis[u]+e[i].w;
		if(!in[v]){
			q.push(v);
			in[v]=1;
		}	
	}	
	}
	}
for(int i=1;i<=n;i++) cout<<dis[i]<<' ';
	return 0;
}

为什么输出除了本身 都是-1 减掉INF的后两位就是90分 拜托大佬了……俺要掉小珍珠了ㄒAㄒ

2024/1/25 10:18
加载中...