题目链接:http://acm.swust.edu.cn/problem/0582/

Time limit(ms): 5000        Memory limit(kb): 65535
 
Description
西南科技大学人数众多,学生多了附近的网吧也多。 
很多同学都热衷于上网,虽然学校提供了开放机房,但由于各种原因导致大家去网吧的兴趣还高些。平时网吧的情况还好些,然而周末放假是绝好的时间,但是学校人多啊,一放学去网吧的人就开始狂奔,竞争之激烈,抢到机子的难度非常之大。往往在我们到达网吧之前都坐满了。 
学校到网吧的路是错综复杂的,以致于到一个自己想去的网吧都有非常多的路线可以选择,而路线的长度又不相同,这样就决定了要花费的时间,因此想要尽快到达,选择一条最佳的线路是很有必要的。 
为了简化问题,我们把学校与周边的网吧看做图中的顶点,学校与网吧,网吧与网吧之间的路线看做边,每个边都有一个权,表示我们走完这条路的时间,由于放学人流量大,如果反向走会有危险,因此这是一个有向图。 
我的的学校在S点,想要去的网吧在T点。你的任务就是选择一条最佳路线,使得从学校到目的地网吧的时间最短,你只需要输出最短到达时间即可。

 
Input
共有M+2 行数据 
第一行两个整数N,M,表示点数和边数。 
然后M行每行3 个正整数(u,v,t),表示有一条可由u 到v耗时为t的边。 
最后一行两个正整数S、T。 
1< N <=10000,1<= M <=100000

 
Output
只有一行,一个整数表示最短时间。如果S、T之间不存在通路则输 
出“No Solution!”(双引号不输出)。

 
Sample Input
4 4
1 2 3
2 4 10
1 3 5
3 4 5
1 4
Sample Output
10
 
解题思路:明显是求单源最短路径,时间不可能为负值吧,不存在负环,所以这里用SPFA(链接)可以轻松搞定Orz~~~
代码如下:
 #include <iostream>
#include <queue>
#include <vector>
#include <cstring>
using namespace std; #define maxn 10005
#define inf 0x3f3f3f3f struct node{
int v, w;
node(int x, int y) :v(x), w(y){};
node(){};
}; vector<node>mpt[maxn];
//ptr判断一个点的入队操作次数,判断负环
int vis[maxn], ptr[maxn], dis[maxn], t, n, m, u, v, w, s; int Spfa(int s){
queue<int>Q;
Q.push(s);
vis[s] = , dis[s] = , ptr[s] = ;
while (!Q.empty()){
int u = Q.front();
Q.pop();
vis[u] = ;
for (int i = ; i<mpt[u].size(); i++){
v = mpt[u][i].v;
if (dis[v]>dis[u] + mpt[u][i].w){
dis[v] = dis[u] + mpt[u][i].w;
if (!vis[v]){
vis[v] = ;
Q.push(v);
if (++ptr[v] > n) return ;
}
}
}
}
return ;
} int main(){
while (cin >> n >> m){
memset(vis, , sizeof(vis));
memset(dis, inf, sizeof(dis));
memset(ptr, , sizeof(ptr));
for (int i = ; i < m; i++){
cin >> u >> v >> w;
mpt[u].push_back(node(v, w));
}
cin >> s >> t;
if (Spfa(s))
cout << dis[t] << endl;
else
cout << "No Solution!\n";
}
return ;
}

[Swust OJ 582]--放学了,抢机子了(SPFA)的更多相关文章

  1. [Swust OJ 404]--最小代价树(动态规划)

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535   Des ...

  2. [Swust OJ 649]--NBA Finals(dp,后台略(hen)坑)

    题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two ...

  3. SWUST OJ NBA Finals(0649)

    NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128   Descri ...

  4. [Swust OJ 1023]--Escape(带点其他状态的BFS)

    解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535     Descript ...

  5. [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)

    题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535   Descriptio ...

  6. [Swust OJ 1126]--神奇的矩阵(BFS,预处理,打表)

    题目链接:http://acm.swust.edu.cn/problem/1126/ Time limit(ms): 1000 Memory limit(kb): 65535 上一周里,患有XX症的哈 ...

  7. [Swust OJ 1026]--Egg pain's hzf

      题目链接:http://acm.swust.edu.cn/problem/1026/     Time limit(ms): 3000 Memory limit(kb): 65535   hzf ...

  8. [Swust OJ 1139]--Coin-row problem

    题目链接:  http://acm.swust.edu.cn/contest/0226/problem/1139/ There is a row of n coins whose values are ...

  9. [Swust OJ 385]--自动写诗

    题目链接:http://acm.swust.edu.cn/problem/0385/ Time limit(ms): 5000 Memory limit(kb): 65535    Descripti ...

随机推荐

  1. C语言入门(5)——运算符与表达式

    C语言中运算符和表达式数量之多,在高级语言中是少见的.正是丰富的运算符和表达式使C语言功能十分完善.这也是C语言的主要特点之一. C语言的表达式由运算符.常量及变量构成.C语言表达式基本遵循一般代数规 ...

  2. [LeetCode][Python]Container With Most Water

    # -*- coding: utf8 -*-'''https://oj.leetcode.com/problems/container-with-most-water/ Given n non-neg ...

  3. 初探swift语言的学习笔记(闭包-匿名函数或block块代码)

    使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: 首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButto ...

  4. ios本地文件内容读取,.json .plist 文件读写

    ios本地文件内容读取,.json .plist 文件读写 本地文件.json .plist文件是较为常用的存储本地数据的文件,对这些文件的操作也是一种常用的基础. 本文同时提供初始化变量的比较标准的 ...

  5. ##DAY11 UITableView编辑

    ##DAY11 UITableView编辑 每一个视图控制器都有一个编辑按钮,因为项目中编辑的应用场景非常多,所以系统预留了一个编辑按钮供我们使用 self.navigationItem.leftBa ...

  6. Sql Server之数据库规范——1、自动化规范命名

    一.废话: 随着数据库的规模越来越大,数据库的表也有成百上千,如果需要对数据库表名及字段名做操作,单个还好,直接一条语句搞定了,但如果要对整个库的所有表和字段名做操作,那就显得有点麻烦了.因此,我们需 ...

  7. 前自加(++a)与后自加(a++)的差别

    自加是自己加1的操作.比如a++ 是a+1 ,变量a变成了 a+1的值. 如果是简单的只做 a++:或者++a的语句,效果是一样的. 但是如果嵌入到复杂的语句中,比如 b = a++: 和 b = + ...

  8. Howie带你云上飘-新浪云

    介绍一下怎么在sae上做个网站 前言 曾经,sae是收费的,计时收费,还挺贵的呢.所以就试玩了一下,没敢继续鼓捣.后来,云计算越来越火了,新浪也不差钱嘛,于是直接给新注册的开发者送好多豆子,于是,免费 ...

  9. Mysql 权限修改何时生效

    首先权限是记录在表中的,所以如果我们要修改权限只要修改表中的数据就可以了! 方法 1 grant ,revoke,set password,rename user .......等等 2 insert ...

  10. 专访CEO何朝曦:深信服高速成长的秘诀

    在深信服公司深圳总部的办公室里,要迅速找到几位高管的工位远远不如找一位女员工的座位那样容易. 深信服CEO何朝曦先生 公司里虽然女孩很少,但几乎每位女员工的工位上都有一盆绿植.相比之下,从公司CEO何 ...