题目链接:http://poj.org/problem?id=1511

Description

In the age of television, not many people attend theater performances. Antique Comedians of Malidinesia are aware of this fact. They want to propagate theater and, most of all, Antique Comedies. They have printed invitation cards with all the necessary information and with the programme. A lot of students were hired to distribute these invitations among the people. Each student volunteer has assigned exactly one bus stop and he or she stays there the whole day and gives invitation to people travelling by bus. A special course was taken where students learned how to influence people and what is the difference between influencing and robbery.

The transport system is very special: all lines are unidirectional
and connect exactly two stops. Buses leave the originating stop with
passangers each half an hour. After reaching the destination stop they
return empty to the originating stop, where they wait until the next
full half an hour, e.g. X:00 or X:30, where 'X' denotes the hour. The
fee for transport between two stops is given by special tables and is
payable on the spot. The lines are planned in such a way, that each
round trip (i.e. a journey starting and finishing at the same stop)
passes through a Central Checkpoint Stop (CCS) where each passenger has
to pass a thorough check including body scan.

All the ACM student members leave the CCS each morning. Each
volunteer is to move to one predetermined stop to invite passengers.
There are as many volunteers as stops. At the end of the day, all
students travel back to CCS. You are to write a computer program that
helps ACM to minimize the amount of money to pay every day for the
transport of their employees.

Input

The
input consists of N cases. The first line of the input contains only
positive integer N. Then follow the cases. Each case begins with a line
containing exactly two integers P and Q, 1 <= P,Q <= 1000000. P is
the number of stops including CCS and Q the number of bus lines. Then
there are Q lines, each describing one bus line. Each of the lines
contains exactly three numbers - the originating stop, the destination
stop and the price. The CCS is designated by number 1. Prices are
positive integers the sum of which is smaller than 1000000000. You can
also assume it is always possible to get from any stop to any other
stop.

Output

For
each case, print one line containing the minimum amount of money to be
paid each day by ACM for the travel costs of its volunteers.

Sample Input

2
2 2
1 2 13
2 1 33
4 6
1 2 10
2 1 60
1 3 20
3 4 10
2 4 5
4 1 50

Sample Output

46
210 题目大意:给定一个有向图,问从起点到每一个点一个来回共需要多少时间
解题思路:将有向线段的起点和终点互换就可以得到任意点到起点的最短路了,由于数据量太大,需要用spfa,同时用cin也会超时。本来还想写一发dfs的,发现会爆栈,就只贴了bfs的码
 #include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<map>
#include<cstdio>
#include<queue> using namespace std; const int LEN = ;
const int INF = 0x3f3f3f3f; struct Edge{
int to, next;
long long val;
}edge[][LEN]; int h[][LEN], cnt1, cnt2;
int p, q;
long long dis[LEN];
bool vis[LEN]; void spfa_bfs( int cnt ){
queue<int> Q;
memset( dis, INF, LEN * sizeof( long long ) );
memset( vis, false, LEN * sizeof( bool ) ); dis[] = ;
Q.push( );
vis[] = true; while( !Q.empty() ){
int x;
x = Q.front(); Q.pop(); vis[x] = false; for( int k = h[cnt][x]; k!= ; k = edge[cnt][k].next ){
int y = edge[cnt][k].to;
if( dis[x] + edge[cnt][k].val < dis[y] ){
dis[y] = dis[x] + edge[cnt][k].val;
if( !vis[y] ){
vis[y] = true;
Q.push( y );
}
}
}
}
} int main(){
int n;
scanf( "%d", &n );
while( n-- ){
cnt1 = cnt2 = ;
scanf( "%d%d", &p, &q );
int beg, end;
long long val;
memset( h, , sizeof( h ) );
for( int i = ; i < q; i++ ){
scanf( "%d%d%lld", &beg, &end, &val );
edge[][cnt1].to = end;
edge[][cnt1].val = val;
edge[][cnt1].next = h[][beg];
h[][beg] = cnt1++; edge[][cnt2].to = beg;
edge[][cnt2].val = val;
edge[][cnt2].next = h[][end];
h[][end] = cnt2++;
} long long ans = ;
spfa_bfs( );
for( int i = ; i <= p; i++ ) ans += dis[i];
spfa_bfs( );
for( int i = ; i <= p; i++ ) ans += dis[i]; cout << ans << endl;
} return ;
}

POJ-1511 Invitation Cards( 最短路,spfa )的更多相关文章

  1. POJ 1511 Invitation Cards(Dijkstra(优先队列)+SPFA(邻接表优化))

    题目链接:http://poj.org/problem?id=1511 题目大意:给你n个点,m条边(1<=n<=m<=1e6),每条边长度不超过1e9.问你从起点到各个点以及从各个 ...

  2. POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)

    POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...

  3. POJ1511 Invitation Cards —— 最短路spfa

    题目链接:http://poj.org/problem?id=1511 Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Tota ...

  4. POJ 1511 Invitation Cards (最短路spfa)

    Invitation Cards 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/J Description In the age ...

  5. POJ 1511 Invitation Cards (spfa的邻接表)

    Invitation Cards Time Limit : 16000/8000ms (Java/Other)   Memory Limit : 524288/262144K (Java/Other) ...

  6. poj 1511 Invitation Cards(最短路中等题)

    In the age of television, not many people attend theater performances. Antique Comedians of Malidine ...

  7. POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 16178   Accepted: 526 ...

  8. poj 1511 Invitation Cards (最短路)

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 33435   Accepted: 111 ...

  9. Poj 1511 Invitation Cards(spfa)

    Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 24460 Accepted: 8091 De ...

  10. (简单) POJ 1511 Invitation Cards,SPFA。

    Description In the age of television, not many people attend theater performances. Antique Comedians ...

随机推荐

  1. MD、SHA、MAC消息摘要算法实现与应用

    1.消息摘要概述 消息摘要(Message Digest)又称为数字摘要(Digital Digest).它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生 ...

  2. 洛谷 P3811 题解

    题面 利用暴力快速幂O(nlogn)会TLE掉: 所以对于求1~n的所有逆元要用递推公式: #include <bits/stdc++.h> using namespace std; ]; ...

  3. SQL Server 插入数据时自增长列如何指定数值

    SQL Server 表在导入数据时,有时需要将自增长列指定数值,来保证导入前后的数据完全一致,如何实现? SQL Server 提供了方法: SET IDENTITY_INSERT,允许将显式值插入 ...

  4. 使用f12定位bug

    为什么找到网站中的bug后还要去分析它到底是属于前端bug还是后端bug 三个原因: 1.在一些公司,一个系统可能是由前端团队和后端团队共同开发出来的,因此在分配bug的时候,不同模块的bug一般都会 ...

  5. Linux系统与程序监控工具atop教程

    引言 Linux以其稳定性,越来越多地被用作服务器的操作系统(当然,有人会较真地说一句:Linux只是操作系统内核:).但使用了Linux作为底层的操作系统,是否我们就能保证我们的服务做到7*24地稳 ...

  6. JS DOM(文档对象模型)与BOM(浏览器对象模型)

    在JS中,对DOM(Document Object Model)对象和BOM(Browser Object Model )对象的操作是非常重要的内容.DOM主要包括HTML文档的属性和方法,像对HTM ...

  7. Liunx之nginx代理

    一.代理 正向代理 正向代理,也就是传说中的代理,他的工作原理就像一个跳板(VPN),简单的说: 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的 ...

  8. GitPage部署

    前言 该文章主要为了记录我如何在GitPage上面部署博客网站,这里的话,码云上面也有相同的功能. 若有小伙伴担心GitHub担心把中国的访问也禁了的话(大概不会吧),可以在码云上面部署.流程应该是差 ...

  9. js及jquery常用代码

    1.获取屏幕尺寸 document.documentElement.scrollWidth; document.documentElement.scrollHeight; $(window).widt ...

  10. 章节十六、1-TestNG简介

    一.TestNG 介绍 1.TestNG 是一个来自 JUnit 和 NUnit 的测试框架,它具拥有更多的功能,提高了 执行的效率. 2.TestNG 是一个开源的自动化测试框架 去除了老框架的大部 ...