蓝桥杯 算法训练 最短路 [ 最短路 bellman ]
2024-09-21 20:40:58
算法训练 最短路
时间限制:1.0s 内存限制:256.0MB
锦囊1
锦囊2
锦囊3
问题描述
给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。
输入格式
第一行两个整数n, m。
接下来的m行,每行有三个整数u, v, l,表示u到v有一条长度为l的边。
输出格式
共n-1行,第i行表示1号点到i+1号点的最短路。
样例输入
3 3 1 2 -1 2 3 -1 3 1 2
样例输出
-1 -2
数据规模与约定
对于10%的数据,n = 2,m = 2。
对于30%的数据,n <= 5,m <= 10。
对于100%的数据,1 <= n <= 20000,1 <= m <= 200000,-10000 <= l <= 10000,保证从任意顶点都能到达其他所有顶点。
题解:
由于有环,有负权,故用bellman-ford
由于数据有点大,故用队列进行优化
506328 | 609738062@qq.com | 最短路 | 04-07 17:24 | 1.055KB | C++ | 正确 | 100 | 171ms | 4.003MB | 评测详情 |
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector> using namespace std; const int N = ;
const int inf = 0x3f3f3f3f; typedef struct
{
int to;
int dis;
}PP; int n,m;
vector<PP> bian[N];
int v[N];
int vis[N]; void bellman()
{
queue<int> que;
int te,nt;
que.push();
vis[]=;
int i;
int dis;
while(que.size()>=)
{
te=que.front();
que.pop();
for(i=;i<bian[te].size();i++){
nt=bian[te][i].to;
dis=bian[te][i].dis;
if(v[nt]>v[te]+dis){
v[nt]=v[te]+dis;
if(vis[nt]==){
vis[nt]=;
que.push(nt);
}
}
}
vis[te]=;
}
} int main()
{
int i,j;
int uu,vv,l;
PP te;
//freopen("data.in","r",stdin);
//while(scanf("%d%d",&n,&m)!=EOF)
scanf("%d%d",&n,&m);
{
memset(vis,,sizeof(vis));
fill(v,v+n+,inf);
v[]=;
for(i=;i<=n;i++){
bian[i].clear();
//printf(" i=%d v=%d\n",i,v[i]);
}
for(i=;i<=m;i++){
scanf("%d%d%d",&uu,&vv,&l);
te.to=vv;te.dis=l;
bian[uu].push_back(te);
}
bellman();
for(i=;i<=n;i++){
printf("%d\n",v[i]);
}
}
return ;
}
最新文章
- iOS 学习 - 3.仿qq列表
- Sql server 备份还原后出现&ldquo;受限制用户&rdquo;问题
- Invalid byte 3 of 3-byte UTF-8 sequence
- Linux下查看文件属性
- 分享我的PL/SQL的优化设置,为开发全面提速
- PHP再学习1——cURL表单提交、HTTP请求和响应分析
- [Cycle.js] Customizing effects from the main function
- poj 1961 Period(KMP训练指南例题)
- C/S通信模型和相关技术要点
- 动态生成Zip
- Swift得知——使用和分类功能(四)
- Django之路:QuerySet API,后台和表单
- iOS 之 调试、解决BUG
- 大数据(1):基于sogou.500w.utf8数据的MapReduce程序设计
- python接口自动化-post请求4
- Echarts 柱状图配置详解
- 05 详解C# 迭代器
- JavaScript是如何工作的:与WebAssembly比较及其使用场景
- Acceleration for ML 论文导读
- a标签和p标签不能设置margin