【t054】糟糕的网络
Time Limit: 1 second
Memory Limit: 128 MB
【问题描述】
前几天sqybi 还在高高兴兴的用BOINC 完成着一个又一个的任务呢,但现在sqybi 突然变得闷闷不乐起来。原因就是前一段时间的海
底地震震断了光缆,导致了国外网站的整体瘫痪,而BOINC 的大部分工作的主站都是设在国外的。这样,sqybi 就不能从BOINC
下载到任务了,而他已经完成的任务也不能上传。
气愤的他打算自己找到在光缆断裂的时候最好的一条电缆替代线路。通过电流在电缆中传播的衰减公式(由汤姆逊博士发现),我们
可以知道电缆之间的距离越远,那么电子衰
减的就越严重。所以,sqybi 想找到一条距离最短的电缆传输线路。
已知每一个电缆结点(就是说电缆数据在这个地方可以进行交换传输)的编号和它们之间的电缆分布情况,求出从0 结点指向n+1 结
点最短的一条线路。
【输入格式】
第1 行是一个正整数n,表示电缆结点的数量(不包括0 结点和n+1 结点)。
第2 行是一个正整数m,表示电缆的数量。
接下来m 行,第i 行表示第i-2 条电缆的四个数,分别是整数L、x1、x2 和s,每两个数之间用一个空格分开。其中L 表示该条电缆
的长度;当s 为1 的时候,这条电缆是从x1 结点指向x2 结点的一条单向电缆,而当s 为2 的时候,这条电缆是在x1 结点和x2
结点之间的一条双向电缆。
【输出格式】
仅一个数,为最短线路的长度。
【数据范围】
对于100%数据,n≤1000,m≤10000,1≤L≤1000。
【说明】
输入数据可能会有重复或者自己指向自己的情况,前者可以将重复的看作一条,后者应不考虑。
Sample Input
3
4
1 0 1 1
1 1 2 2
1 2 3 1
2 3 4 1
Sample Output
5
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t054
【题意】
【题解】
数据坑:
对于同一条边x->y
如果重复输入了;
它的边权只取最后一次输入的
然后就是从0号节点跑一遍spfa就好;
【完整代码】
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%I64d",&x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int M = 1e4+100,N = 1e3+100;
struct abc
{
int en,nex;
};
abc bian[M*2];
int fir[N],tot,n,m,dis[N],w[N][N];
bool inq[N];
queue <int> dl;
void add(int x,int y)
{
bian[++tot].nex = fir[x];
fir[x] = tot;
bian[tot].en = y;
}
int main()
{
//freopen("F:\\rush.txt","r",stdin);
rei(n);
rei(m);
rep1(i,1,m)
{
int z,x,y,p;
rei(z),rei(x),rei(y),rei(p);
if (x==y) continue;
add(x,y);
w[x][y] = z;
if (p==2) add(y,x),w[y][x] = z;
}
memset(dis,0x3f3f3f3f,sizeof dis);
dis[0] = 0,inq[0] = true;
dl.push(0);
while (!dl.empty())
{
int x = dl.front();
inq[x] = false,dl.pop();
for (int i = fir[x];i;i = bian[i].nex)
{
int y = bian[i].en;
if (dis[y]>dis[x]+w[x][y])
{
dis[y] = dis[x]+w[x][y];
if (!inq[y])
{
inq[y] = true;
dl.push(y);
}
}
}
}
printf("%d\n",dis[n+1]);
return 0;
}
【t054】糟糕的网络的更多相关文章
- iOS模拟(糟糕的)网络环境
有时候为了模拟在糟糕的网络环境下app的表现,会故意拔网线(断wifi),苹果其实提供了专门的工具来精确地模拟你在几个预设的场景下的网络连接情况:Network Link Conditioner 点击 ...
- android 网络请求库的比较
源码请戳 一. 现有库和选择的库 HttpURLConnection:是Java中的标准类,是对Java中socket的封装. Httpclient:是Apache的开源框架,是对HttpURLCon ...
- [转载]iOS 10 UserNotifications 框架解析
活久见的重构 - iOS 10 UserNotifications 框架解析 TL;DR iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...
- 阿里无线前端性能优化指南 (Pt.1 加载优化)
前言 阿里无线前端团队在过去一年对所负责业务进行了全面的性能优化.以下是我们根据实际经验总结的优化指南,希望对大家有所帮助. 第一部分仅包括数据加载期优化. 图片控制 对于网页特别是电商类页面来说,图 ...
- Google 新推出Background sync API
Background sync是Google新推出的Web API,可延迟用户行为,直到用户网络连接稳定.这样有助于保证用户想要发送的数据就是实际发送的数据. 目前存在的问题 网络是消磨用户时间最多的 ...
- iOS 10 UserNotifications 框架解析
摘自:https://onevcat.com/2016/08/notification/ iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...
- 转15个必须知道的chrome开发者技巧GIF
在Web开发者中,Google Chrome是使用最广泛的浏览器.六周一次的发布周期和一套强大的不断扩大开发功能,使其成为了web开发者必备的工具.你可能已经熟悉了它的部分功能,如使用console和 ...
- 谷歌浏览器 DEV Tools
谷歌浏览器如今是Web开发者们所使用的最流行的网页浏览器.伴随每六个星期一次的发布周期和不断扩大的强大的开发功能,Chrome变成了一个必须的工具.大多数可能熟悉关于chorme的许多特点,例如使用c ...
- Chorme dev tools小技巧
1.快速稳健转换:打开DevTools,按下Ctrl+P来快速寻找和打开你工程中的任意文件. 2.在源代码中搜索:打开DevTools,按下Ctrl+Shift+F,即可在所有已加载文件中查找一个特定 ...
随机推荐
- html5 audio标签相关知识点总结
1.audio指JS原生对象,假如用jquery获取到audio标签后,需要dom[0]转为原生JS对象 if(audio.paused){ //如果音频暂停,就播放 audio.play(); }e ...
- controller接收参数的对象是vo还是dto?
我也没有深入了解过,就我使用情况来说的话,VO和DTO在实际开发过程中其实可以是一样的.从定义上来说他们区别于使用的所在层,VO(view object)视图对象,DTO(Data Transfer ...
- amazeui学习笔记--css(HTML元素3)--表单Form
amazeui学习笔记--css(HTML元素3)--表单Form 一.总结 1.form样式使用:在容器上添加 .am-form class,容器里的子元素才会应用 Amaze UI 定义的样式. ...
- 重新启动IIS不重启电脑
有时候我们在WEB程序如:ASP,中无意中使用到了一个死循环,或者在测试 DLL组件时,挂了.这时候IIS就停止了响应,我们要继续我们的工作啊,重启IIS服务吧. 然而这个进程还在执行,Inter ...
- git stash备份当前工作区内容,回到最近一次commit提交
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致.同时,将当前的工作区内容保存到Git栈中.git stash pop: 从Git栈中读取 ...
- Flask项目之手机端租房网站的实战开发(二)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...
- swift 数据存储
1.plist 存储 1.利用沙盒根目录拼接“Documents”字符串 //存储 func saveArray() { // 1.获得沙盒根路径,不管是真机还是模拟机,用它是最合适不过了 let h ...
- Oracle分页查询的一个存储过程:
create or replace procedure AspNetOraclePager( tableName in varchar2, --表名 fields in var ...
- vue-cli 构建vue项目
师父说,咱们还是要用vue-cli 去构建前端项目.然后我就开始了 懵逼之旅. 今天上午主要就是搞懂用webpack和vue-cli怎么搭建 运行项目 首先找到了咱们博客园 园友的博客,提供了大概五个 ...
- 全面详细介绍一个P2P网贷领域的ERP系统的主要功能
一般的P2P系统,至少包括PC网站的前端和后端.前端系统的功能,可以参考"P2P系统哪家强,功能其实都一样" http://blog.csdn.net/fansunion/ ...