牛客小白月赛6 I 公交线路 最短路 模板题
2024-08-30 02:25:50
链接:https://www.nowcoder.com/acm/contest/136/I
来源:牛客网
题目描述
P市有n个公交站,之间连接着m条道路。P市计划新开设一条公交线路,该线路从城市的东站(s点)修建到西站(t点),请为P市设计一条满足上述条件并且最短的公交线路图。
输入描述:
第一行有5个正整数n,m,s,t。 接下来m行,每行3个数a,b,v描述一条无向道路a——b,长度为v。
输出描述:
如果有解,输出一行,表示满足条件的最短公交线路的长度c。 否则,输出“-1”
输入例子:
3 3 1 2
1 2 3
2 3 4
1 3 5
输出例子:
3
-->
备注:
对于100%的测试数据:
1 ≤ s,t ≤ n ≤ 1000
1 ≤ m ≤ 10000
1 ≤ 道路的长度 ≤ 10000 分析:一个裸的最短路模板题
搞不懂搞不懂,比赛的时候为什么没有人过这个题?
这套题目后面的题都好做,卡在前面真的难受
这榜真的好歪
AC代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<bits/stdc++.h>
#define maxn 1010
using namespace std;
vector<pair<int,int> >E[maxn];
int n,m;
int d[maxn];
void init()
{
for(int i=0;i<maxn;i++)
E[i].clear();
for(int i=0;i<maxn;i++)
d[i]=1e9;
}
int main()
{
while(cin >> n>> m)
{
int s,t;
scanf("%d%d",&s,&t);
init();
for(int i=0;i<m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
E[x].push_back(make_pair(y,z));
E[y].push_back(make_pair(x,z));
}
priority_queue<pair<int,int> >Q;
d[s]=0;
Q.push(make_pair(-d[s],s));//使得返回最小值,本来是返回最大值
while(!Q.empty())
{
int now = Q.top().second;
Q.pop();
for(int i=0;i<E[now].size();i++)
{
int v = E[now][i].first;
if(d[v]>d[now]+E[now][i].second)
{
d[v]=d[now]+E[now][i].second;
Q.push(make_pair(-d[v],v));
}
}
}
if(d[t]==1e9)
printf("-1\n");
else printf("%d\n",d[t]);
}
return 0;
}
最新文章
- checkbox选中 和是否选中
- Android(Xamarin)之旅(五)
- VS编程中找不到Microsoft.Office.Core、Microsoft.Office.Interop.Word和VBIDE
- J2EE开发实战基础系列一 HelloWorld【转】
- Tomcat远程调试catalina.sh的配置
- Media Player(APP)
- 操作系统杂谈 mac 和linux windows若干概念
- HTML5 input控件 placeholder属性
- Python标准库:内置函数dict(iterable, **kwarg)
- C: Run a System Command and Get Output? 在C程序中调用工具,并且得到结果。
- jQuery扩展函数设置所有对象只读
- (1)pygame_第一个窗口程序
- MySQL数据库主从复制实践
- 三 : spring-uploadify上传文件
- javamail 发送、读取邮件
- Fetch API &; Delete &; HTTP Methods
- js获取file控件的完整路径(上传图片预览)
- 关于vue,webpack 中 “exports is not defined”报错
- OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测
- 3、QT分析之消息事件机制