题目链接: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. Active Directory域

    引言 在 Microsoft® Windows® 2000 Server 操作系统的诸多增强功能中,Microsoft Active Directory™ 功能的引入意义最为重大,但也最常引起困惑.与 ...

  2. 华为matebook14vm虚拟机错误

    1.创建时显示不支持64位虚拟机 测试环境: 华为matebook14 window10 专业工作站版  1903   问题描述: 创建虚拟机时显示:此主机不支持64位解决方案   问题参考: 参考1 ...

  3. Python—三目运算

    Python 可通过 if 语句来实现三目运算的功能,因此可以近似地把这种 if 语句当成三目运算符.作为三目运算符的 if 语句的语法格式如下: (True_statements) if (expr ...

  4. 接口测试时遇到 java 代码加密请求数据,用 python 的我该怎么办?

    前言 自动化测试应用越来越多了,尤其是接口自动化测试. 在接口测试数据传递方面,很多公司都会选择对请求数据进行加密处理. 而目前为主,大部分公司的产品都是java语言实现的.所以加密处理也是java实 ...

  5. 再记一次经典Net程序的逆向过程

    1.前言 上次发完,有网友问了一个问题:如果不绕过编译,而是直接编译怎么办? 记一次Net软件逆向的过程:https://www.cnblogs.com/dotnetcrazy/p/10142315. ...

  6. Jenkins安装插件问题

    最近在电脑尝试安装Jenkins软件 安装插件的时候 一直报错 没有推荐插件提示一直报错 at java.lang.Thread.run(Unknown Source) Caused by: java ...

  7. Java匹马行天下之J2EE框架开发——Spring—>Spring框架知多少

    ————也许我注定成不了一个伟大的人,但是至少我可以做一个很棒的自己.我想我现在应该做的不是瞻前顾后,而是活在当下,正确认知自己,做好自己现在的工作,努力提升自己的能力,踏踏实实地做一个程序员 一.思 ...

  8. 七天学会NodeJS——第一天

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:http://nqdeng.github.io/7-days-nodejs Node.js 是一个能 ...

  9. String——字符串

    首先看一下string的一部分源码吧 public final class String private final char value[]; 我们暂且只看这两行, 第一行String被final修 ...

  10. SpringBoot学习系列之一(反射)

    最近在学习SpringBoot的知识,动起手来学习的时候才发现SpringBoot项目采用了大量的反射机制,晕,作为一个应届毕业生,以前学习反射的时候给我的感觉就是,这个到底用来干嘛的,好像没啥用啊, ...