社区讨论
标准dijkstra
P4779【模板】单源最短路径(标准版)参与者 8已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @mi6vl932
- 此快照首次捕获于
- 2025/11/20 11:32 4 个月前
- 此快照最后确认于
- 2025/11/20 11:32 4 个月前
然而全TLE
请大佬看看哪里可以优化
CPP#include<bits/stdc++.h>
using namespace std;
const int Max_n=100010,Max_m=200010,Max_int=2147483647;
struct Edge
{
int to;
int len;
int next;
}edge[Max_m];
int n,m,s,now,mn;
int arrive,leave,length,num;
int ans[Max_n],last[Max_n];
bool Visit[Max_n];
void input(int a,int b,int c)
{
num++;
edge[num].to=b;
edge[num].len=c;
edge[num].next=last[a];
last[a]=num;
}
int main()
{
cin>>n>>m>>s;
for(int i=1;i<=n;i++) ans[i]=2147483647;
for(int i=0;i<m;i++)
{
cin>>arrive>>leave>>length;
input(arrive,leave,length);
}
int now=s;
ans[s]=0;
while(!Visit[now])
{
Visit[now]=true;
for(int i=last[now];i!=0;i=edge[i].next)
{
if(!Visit[edge[i].to] && ans[edge[i].to]>ans[now]+edge[i].len)
ans[edge[i].to]=ans[now]+edge[i].len;
}
mn=Max_int;
for(int i=1;i<=n;i++)
if(!Visit[i] && mn>ans[i])
{
mn=ans[i];
now=i;
}
}
for(int i=1;i<=n;i++) cout<<ans[i]<<' ';
return 0;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...