求助大佬
查看原帖
求助大佬
541069
SuperCowHorse楼主2022/2/1 19:01

为什么会全TLE?

#include<bits/stdc++.h>
#define lo long long
using namespace std;
lo n,m,s,u,v,w,cnt,minn,flag;
lo head[100005],dis[100005];
bool use[100005];
struct node{
	lo start,end,height,next;
}a[500005];
void add(lo u,lo v,lo w)
{
	++cnt;
	a[cnt].start=u;
	a[cnt].end=v;
	a[cnt].height=w;
	a[cnt].next=head[u];
	head[u]=cnt;
}
int main()
{
	scanf("%lld %lld %lld",&n,&m,&s);
	for(int i=1;i<=m;i++)
	{
		scanf("%lld %lld %lld",&u,&v,&w);
		add(u,v,w);
	}
	memset(dis,127,sizeof(dis));
	dis[s]=0;
	for(int i=1;i<=n;i++)
	{
		minn=2147483647;
		for(int j=1;j<=n;j++)
			if(!use[j]&&minn>dis[j])
			{
				flag=j;
				minn=dis[j];
			}
		use[flag]=1;
		for(int j=head[flag];j;j=a[j].next)
			dis[a[j].end]=min(dis[a[j].end],dis[a[j].start]+a[j].height);
	}
	for(int i=1;i<=n;i++)
		printf("%lld ",dis[i]);
}
2022/2/1 19:01
加载中...