爆0求助,样例TLE
查看原帖
爆0求助,样例TLE
658973
what_can_I_do楼主2022/11/2 21:24
#include<bits/stdc++.h>
using namespace std;
int n,m,s,c[100000],pos,head[400000],cnt=0;
bool b[100000]={0};
struct aaa
{
	int u;
	int v;
	int w;
}tu[400000];
void add(int x,int y,int z)
{
    tu[++cnt].u=head[x];
    tu[cnt].v=y;
    tu[cnt].w=z;
    head[x]=cnt;
}
int main()
{
    scanf("%d%d%d",&n,&m,&s);
    for(register int i=1;i<=m;i++)
    {
    	int a,b,k;
    	scanf("%d%d%d",&a,&b,&k);
    	add(a,b,k);
    	add(b,a,k);
	}
	memset(c,99999999,sizeof(c));
	c[s]=0,pos=s;
	while(b[pos]==0)
	{
		int minn=99999999;
		b[pos]=1;
		for(register int i=head[pos];i!=0;i=tu[i].v) if(b[tu[i].u]==0&&c[tu[i].u]>c[pos]+tu[i].w) c[tu[i].u]=c[pos]+tu[i].w;
		for(register int i=1;i<=n;i++) if(c[i]<minn&&b[i]==0) minn=c[i],pos=i;
	}
	for(register int i=1;i<=n;i++) printf("%d ",c[i]);
    return 0;
}
2022/11/2 21:24
加载中...