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】糟糕的网络的更多相关文章

  1. iOS模拟(糟糕的)网络环境

    有时候为了模拟在糟糕的网络环境下app的表现,会故意拔网线(断wifi),苹果其实提供了专门的工具来精确地模拟你在几个预设的场景下的网络连接情况:Network Link Conditioner 点击 ...

  2. android 网络请求库的比较

    源码请戳 一. 现有库和选择的库 HttpURLConnection:是Java中的标准类,是对Java中socket的封装. Httpclient:是Apache的开源框架,是对HttpURLCon ...

  3. [转载]iOS 10 UserNotifications 框架解析

    活久见的重构 - iOS 10 UserNotifications 框架解析 TL;DR iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...

  4. 阿里无线前端性能优化指南 (Pt.1 加载优化)

    前言 阿里无线前端团队在过去一年对所负责业务进行了全面的性能优化.以下是我们根据实际经验总结的优化指南,希望对大家有所帮助. 第一部分仅包括数据加载期优化. 图片控制 对于网页特别是电商类页面来说,图 ...

  5. Google 新推出Background sync API

    Background sync是Google新推出的Web API,可延迟用户行为,直到用户网络连接稳定.这样有助于保证用户想要发送的数据就是实际发送的数据. 目前存在的问题 网络是消磨用户时间最多的 ...

  6. iOS 10 UserNotifications 框架解析

    摘自:https://onevcat.com/2016/08/notification/ iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...

  7. 转15个必须知道的chrome开发者技巧GIF

    在Web开发者中,Google Chrome是使用最广泛的浏览器.六周一次的发布周期和一套强大的不断扩大开发功能,使其成为了web开发者必备的工具.你可能已经熟悉了它的部分功能,如使用console和 ...

  8. 谷歌浏览器 DEV Tools

    谷歌浏览器如今是Web开发者们所使用的最流行的网页浏览器.伴随每六个星期一次的发布周期和不断扩大的强大的开发功能,Chrome变成了一个必须的工具.大多数可能熟悉关于chorme的许多特点,例如使用c ...

  9. Chorme dev tools小技巧

    1.快速稳健转换:打开DevTools,按下Ctrl+P来快速寻找和打开你工程中的任意文件. 2.在源代码中搜索:打开DevTools,按下Ctrl+Shift+F,即可在所有已加载文件中查找一个特定 ...

随机推荐

  1. 纯C++实现的HTTP请求封装(POST/GET)

    纯C++实现的HTTP请求(POST/GET),支持windows和linux, 进行简单的封装, 方便调用.实现如下: #include "HttpConnect.h" #ifd ...

  2. nginx源代码分析--事件模块 &amp; 琐碎

    通过HUP信息使得NGINX实现又一次读取配置文件,使用USR2信号使得NGINX实现平滑升级. 在nginx中有模块这么一说,对外全部的模块都是ngx_module_t类型,这个结构体作为全部模块的 ...

  3. Mybatis的使用中的一些不太注意的技巧

    以下就总结一下Mybatis的使用中的一些不太注意的技巧,算是Mybatis的总结笔 1.插入时主键返回 我们向数据库插入一条记录是,使用Mybatis的<insert>是无法返回插入的主 ...

  4. 【例题 4-1 UVA - 1339】 Ancient Cipher

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 位置其实都没关系了. 只要每个字母都有对应的字母,它们的数量相同就可以了. 求出每种字母的数量. 排序之后. 肯定是要一一对应的. ...

  5. Java BigDecimal的基本使用方法

    1.对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类 2.运算速度比一般的+.-.*./要快 3.基本方 法描 述  ...

  6. TOP全异步模式

    Top全异步方式调用技术方案 背景:目前top通过servlet3.0技术结合异步管道化框架做到半异步调用,半异步调用采用异步线程同步调用后端的方式来做api call @飞不起的奥特曼 的部分文档) ...

  7. 一次性能优化将filter转换

    有一条SQL性能有问题,在运行计划中发现filter.遇到它要小心了,类似于nestloop.我曾经的blog对它有研究探索运行计划中filter的原理.用exists极易引起filter. 优化前: ...

  8. stm32优先级

  9. HDU 1284 钱币兑换问题 母函数、DP

    题目链接:HDU 1284 钱币兑换问题 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  10. nginx简介(轻量级开源高并发web服务器:大陆使用者百度、京东、新浪、网易、腾讯、淘宝等)(并发量5w)(一般网站apache够用了,而且稳定)

    nginx简介(轻量级开源高并发web服务器:大陆使用者百度.京东.新浪.网易.腾讯.淘宝等)(并发量5w)(一般网站apache够用了,而且稳定) 一.总结 1.在连接高并发的情况下,Nginx是A ...