社区讨论
最短路模板超时求调
学术版参与者 4已保存回复 12
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @lul0o1qq
- 此快照首次捕获于
- 2024/04/04 17:10 2 年前
- 此快照最后确认于
- 2024/04/04 19:58 2 年前
最多有 条带权无向边
CPP#include<bits/stdc++.h>
using namespace std;
vector<pair<int,int>> v[100010];
int d[100010];
int n,m;
const int inf=1e9;
void Dijkstra(int start)
{
priority_queue<pair<int,int>>q;
for(int i=0;i<=100000;i++)
{
d[i]=inf;
}
d[1]=0;
q.push(make_pair(0,1));
while(!q.empty())
{
pair<int,int> p=q.top();q.pop();
int w=p.first;
int u=p.second;
if(w>d[u])
{
continue;
}
int l=v[u].size();
for(int i=0;i<l;i++)
{
pair<int,int> op=v[u][i];
int f=op.first;
int s=op.second;
if(f+w<d[s])
{
d[s]=f+w;
q.push(make_pair(d[s],s));
}
}
}
if(d[n]==inf)
{
cout<<-1;
}
else
{
cout<<d[n];
}
}
int main()
{
cin>>n>>m;
for(int i=0;i<m;i++)
{
int a,b,w;
scanf("%d%d%d",&a,&b,&w);
v[a].push_back(make_pair(w,b));
v[b].push_back(make_pair(w,a));
}
Dijkstra(1);
}
回复
共 12 条回复,欢迎继续交流。
正在加载回复...