洛谷 P1685 游览 解题报告
P1685 游览
题目描述
顺利通过了黄药师的考验,下面就可以尽情游览桃花岛了!
你要从桃花岛的西头开始一直玩到东头,然后在东头的码头离开。可是当你游玩了一次后,发现桃花岛的景色实在是非常的美丽!!!于是你还想乘船从桃花岛东头的码头回到西头,再玩一遍,但是桃花岛有个规矩:你可以游览无数遍,但是每次游玩的路线不能完全一样。
我们把桃花岛抽象成了一个图,共n个点代表路的相交处,m条边表示路,边是有向的(只能按照边的方向行走),且可能有连接相同两点的边。输入保证这个图没有环,而且从西头到东头至少存在一条路线。两条路线被认为是不同的当且仅当它们所经过的路不完全相同。
你的任务是:把所有不同的路线游览完一共要花多少时间?
输入输出格式
输入格式:
第1行为5个整数:n、m、s、t、t0,分别表示点数,边数,岛西头的编号,岛东头的编号(编号是从1到n)和你乘船从岛东头到西头一次的时间。
以下m行,每行3个整数:x、y、t,表示从点x到点y有一条行走耗时为t的路。
每一行的多个数据之间用一个空格隔开,且:2<=n<=10000; 1<=m<=50000;t<=10000;t0<=10000
输出格式:
假设总耗时为total,则输出total mod 10000的值(total对10000取余)。
题目不难,题意大概是统计所有路径的边权和。
因为是有向边,所以我们可以很方便的采用拓扑排序进行统计。
直接是加法原理和乘法原理上去就行了。
注意判掉自环,路径的方案数也要及时取膜(最开始没注意到只有60分)
Code:
#include <cstdio>
#include <queue>
#define ll long long
using namespace std;
const int N=10010;
const int M=50010;
const ll mod=10000;
int n,m,s,t,in[N];
int head[N],to[M],Next[M],cnt;
ll t0,edge[M],Cnt[N],len[N];
void add(int u,int v,ll w)
{
    to[++cnt]=v;Next[cnt]=head[u];edge[cnt]=w;head[u]=cnt;
}
void init()
{
    scanf("%d%d%d%d%lld",&n,&m,&s,&t,&t0);
    int u,v;ll w;
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%lld",&u,&v,&w);
        if(u!=v)
        {
            add(u,v,w);
            in[v]++;
        }
    }
}
queue <int > q;
void work()
{
    q.push(s);
    Cnt[s]=1;
    while(!q.empty())
    {
        int u=q.front();
        q.pop();
        for(int i=head[u];i;i=Next[i])
        {
            int v=to[i];ll w=edge[i];
            in[v]--;
            Cnt[v]=(Cnt[u]+Cnt[v])%mod;
            len[v]=((len[v]+len[u])%mod+w*Cnt[u]%mod)%mod;
            if(!in[v])
                q.push(v);
        }
    }
    ll ans=((Cnt[t]-1)*t0%mod+len[t])%mod;
    printf("%lld\n",ans);
}
int main()
{
    init();
    work();
    return 0;
}
2018.7.8
洛谷 P1685 游览 解题报告的更多相关文章
- 洛谷 P2058 海港 解题报告
		P2058 海港 题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况: ... 
- 洛谷 P3956 棋盘 解题报告
		P3956 棋盘 题目描述 有一个\(m×m\)的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能 ... 
- 洛谷 P1979 华容道 解题报告
		P1979 华容道 题目描述 小\(B\)最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时 ... 
- BZOJ 3545 / 洛谷 P4197 Peaks 解题报告
		P4197 Peaks 题目描述 在\(\text{Bytemountains}\)有\(N\)座山峰,每座山峰有他的高度\(h_i\).有些山峰之间有双向道路相连,共\(M\)条路径,每条路径有一个 ... 
- 虔诚的墓主人(BZOJ1227)(洛谷P2154)解题报告
		题目描述 小W是一片新造公墓的管理人.公墓可以看成一块N×M的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地. 当地的居民都是非常虔诚的基督徒,他们愿意提前为自己找一块合适墓地. ... 
- 洛谷 P2672 推销员 解题报告
		P2672 推销员 题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为 ... 
- 洛谷 P2679 子串 解题报告
		P2679 子串 题目描述 有两个仅包含小写英文字母的字符串\(A\)和\(B\). 现在要从字符串\(A\)中取出\(k\)个互不重叠的非空子串,然后把这\(k\)个子串按照其在字符串\(A\)中出 ... 
- 洛谷 P1076 寻宝 解题报告
		P1076 寻宝 题目描述 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下: 藏宝楼共有\( ... 
- 洛谷 P1582 倒水 解题报告
		P1582 倒水 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把 ... 
随机推荐
- python函数之format
			自python2.6开始,新增了一种格式化字符串的函数str.format(),此函数可以快速处理各种字符串,它增强了字符串格式化的功能. 基本语法是通过{}和:来代替%.format函数可以接受不限 ... 
- linux shell 压缩解压命令
			.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gun ... 
- VS2017+CMake+OpenCV下报错 set OpenCV_FOUND to FALSE
			问题 在 VS 2017 中使用Cmake 管理项目, 使用 opencv 库, 在find package的时候出现能找到 OpenCVConfig.cmake的文件,但是设置 OpenCV_Fou ... 
- NO.5:自学python之路------标准库,正则表达式
			引言 时间过的好快呀,终于6级也考完了,学习Python的进度也得赶赶了.好的开始这一周的内容. 正文 模块 模块的本质就是‘.py’结尾的文件,它可以用来从逻辑上组织Python代码,它可以是变量. ... 
- js 的filter()方法
			filter()方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组. filter()基本语法: arr.filter(callback[, thisArg]) filter() ... 
- 【quickhybrid】Android端的项目实现
			前言 前文中就有提到,Hybrid模式的核心就是在原生,而本文就以此项目的Android部分为例介绍Android部分的实现. 提示,由于各种各样的原因,本项目中的Android容器确保核心交互以及部 ... 
- React的setState分析
			前端框架层出不穷,不过万变不离其宗,就是从MVC过渡到MVVM.从数据映射到DOM,angular中用的是watcher对象,vue是观察者模式,react就是state了. React通过管理状态实 ... 
- Xcode中的文件类型
			文件类型 Xcode中的文件类型,总共4种类型: 1 普通文件(File) 2 Group(在Xcode中就是黄色的文件夹) 3 Folder(在Xcode中就是蓝色的文件夹) 4 Framework ... 
- Scrum Meeting 10.25
			成员 已完成任务 下一阶段任务 用时 徐越 阅读前端代码中和通信相关的部分 学习服务器配置 4h 赵庶宏 阅读前端代码中和通信相关的部分 学习服务器配置 4h 薄霖 继续做UI开发 界面优化 4h 武 ... 
- 20135234mqy-——信息安全系统设计基础第三周学习总结
			(1)计算机将信息按位编码,通常组成字节序列.用不同的编码方式表示整数,师叔和字符串.不同的计算机模型在编码数字和多字节数据中的字节排序时使用不同的约定. (2)C语言的设计可以包容多种不同字长和数字 ... 
