6个TLE,求助,同dfs写的spfa
查看原帖
6个TLE,求助,同dfs写的spfa
222101
wxwyx楼主2020/10/23 19:58
#include<bits/stdc++.h>
using namespace std;
const int MAXN=10000+5;
const int INF=0x3f3f3f3f;
int n,m,sx;
vector<pair<int,int> > a[MAXN];
int v[MAXN],dis[MAXN];
void dfs(int x)
{
	for(int i=0;i!=a[x].size();i++)
	{
		int nx=a[x][i].first;
		int len=a[x][i].second;
		if(v[nx]) continue;
		if(dis[nx]>len+dis[x])
		{
			dis[nx]=len+dis[x];
			v[nx]=1;
			dfs(nx);
			v[nx]=0;
		}
	}
}
int main()
{
	cin>>n>>m>>sx;
	memset(dis,INF,sizeof(dis));
	memset(v,0,sizeof(v));
	for(int i=1;i<=m;i++)
	{
		int x,y,z;
		cin>>x>>y>>z;
		a[x].push_back(make_pair(y,z));
	}
	dis[sx]=0;
	v[sx]=1;
	dfs(sx);
	for(int i=1;i<=n;i++)
	{
		if(dis[i]!=INF) 
			cout<<dis[i]<<" ";
		else
			cout<<2147483647<<" ";	 
	}
	cout<<endl;
	return 0;
}

谢谢啦

2020/10/23 19:58
加载中...