【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,即可在所有已加载文件中查找一个特定 ...
随机推荐
- 19. Spring Boot Shiro 权限管理
转自:https://blog.csdn.net/catoop/article/details/50520958
- HTML基础第十二讲---链接标志
转自:https://i.cnblogs.com/posts?categoryid=1121494 没有链接,WWW将失去存在的意义!WWW之所以受欢迎,乃在于她除了有精美的图文之外,更有方便且多样化 ...
- HTML基础第八讲---序列卷标
转自:https://i.cnblogs.com/posts?categoryid=1121494 什么叫做序列卷标?其实,这是一个大家都蛮熟悉的东西,只是在网页中换个名称来称呼罢了,序列卷标的功能在 ...
- 1.2 Use Cases中 Stream Processing官网剖析(博主推荐)
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Stream Processing 流处理 Many users of Kafka ...
- 硬件——STM32,ADC篇
未完,待续...... 也就是stm32f10X系列的adc采集出来的结果是12位的 stm32f10X系列有两个16位adc 关于程序的编写方法:一般 “某某.c文件”:都是用来设置“某某”的一些 ...
- (转)bat批处理的注释语句
在批处理中,段注释有一种比较常用的方法: goto start = 可以是多行文本,可以是命令 = 可以包含重定向符号和其他特殊字符 = 只要不包含 :start 这一行,就都是注释 :start 另 ...
- 关于PyYAML报错问题解决
转自:http://www.fwqtg.net/%E5%85%B3%E4%BA%8Epyyaml%E6%8A%A5%E9%94%99%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86% ...
- Docker使用Dockerfile创建Centos(tomcat+jdk)镜像
原文链接:https://blog.csdn.net/qq_37936542/article/details/80824389 Docker构建镜像的方法主要有两种: (1)使用docker c ...
- keytool用法总结
一.keytool的概念 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在 ...
- startActivityForResult()方法具体解释
我们都知道.要开启一个Activity能够在上下文环境中调用startActivity()方法. 可是假设想从开启的Activity中获取某些数据,就能够使用startActivityForResul ...