社区讨论

发生了什么

P3371【模板】单源最短路径(弱化版)参与者 4已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@mi7y4lo1
此快照首次捕获于
2025/11/21 05:31
4 个月前
此快照最后确认于
2025/11/21 05:31
4 个月前
查看原帖
CPP
#include<iostream>
#include<queue>
using namespace std; 
struct Dis
{
	int to;
	int w;
};
struct DisCompingFunction
{
	bool operator()(Dis DisCompFrom,Dis DisComp)
	{
		return DisCompFrom.w>DisComp.w;
	}
};
struct Road
{
	int length;
	int to;
	Road *NextRoad;
};
Road *From[10001],Line[500001];
Dis dis[10001];
int alla=0,n,m;
bool flag[10001];
void add(int a,int b,int v)
{
	alla++;
	Line[alla].length=v;
	Line[alla].to=b;
	Line[alla].NextRoad=From[a];
	From[a]=&Line[alla];
}
int Input()
{
	int s;
	cin>>n>>m>>s;
	int a,b,v;
	for(int i=1;i<=m;i++)
	{
		cin>>a>>b>>v;
		add(a,b,v);
	}
	return s;
}
priority_queue<Dis,vector<Dis>,DisCompingFunction>He;
int Dijkstra(int begin)
{
	for(int i=1;i<=n;i++)
	{
		dis[i].to=i;
		dis[i].w=2147483647;
	}
	dis[begin].w=0;
	He.push(dis[begin]);
	int x;
	flag[0]=true;
	while(!He.empty())
	{
		x=He.top().to;
		  He.pop();
		  if(flag[x])continue;
		flag[x]=true;
		for(Road *i=From[x];i;i=i->NextRoad)
		{
			int j=i->to,k=i->length;
			if(flag[j]==false&&dis[x].w+k<dis[j].w)
			{
				dis[j].w=dis[x].w+k;
				He.push(dis[j]);
			}
		}
	}
}
int main()
{
	Dijkstra(Input());
	for(int i=1;i<=n;i++)
	{
		//if(dis[i].w>=99999999)cout<<2147483647<<endl;
		cout<<dis[i].w<<" ";
	}
}
本地测马上出结果,提交总TLE?

大佬救救我

回复

8 条回复,欢迎继续交流。

正在加载回复...