社区讨论
发生了什么
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 条回复,欢迎继续交流。
正在加载回复...