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取余)。

拓扑排序+DP+数学 乘法原理搞一搞就行了 不知道这题怎么被刷成紫色的。。。

code:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <queue>
  4. #define int long long
  5. using namespace std;
  6. const int wx=100017;
  7. const int mod=10000;
  8. inline int read(){
  9. int sum=0,f=1; char ch=getchar();
  10. while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
  11. while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0'; ch=getchar();}
  12. return sum*f;
  13. }
  14. int num,n,m,s,t,t0;
  15. int f[wx],g[wx],in[wx],head[wx];
  16. struct e{
  17. int nxt,to,dis;
  18. }edge[wx*2];
  19. void add(int from,int to,int dis){
  20. edge[++num].nxt=head[from];
  21. edge[num].to=to;
  22. edge[num].dis=dis;
  23. head[from]=num;
  24. }
  25. queue<int > q;
  26. void bfs(){
  27. q.push(s); g[s]=1;
  28. while(q.size()){
  29. int u=q.front(); q.pop();
  30. for(int i=head[u];i;i=edge[i].nxt){
  31. int v=edge[i].to;
  32. (f[v]+=f[u]+g[u]*edge[i].dis)%=mod;
  33. (g[v]+=g[u])%=mod;
  34. in[v]--;
  35. if(!in[v])q.push(v);
  36. }
  37. }
  38. }
  39. signed main(){
  40. n=read(); m=read(); s=read(); t=read(); t0=read();
  41. for(int i=1;i<=m;i++){
  42. int x,y,z;
  43. x=read(); y=read(); z=read();
  44. if(x==y)continue;
  45. in[y]++;
  46. add(x,y,z);
  47. }
  48. bfs();
  49. printf("%lld\n",(f[t]%mod+(g[t]-1)*t0%mod)%mod);
  50. return 0;
  51. }

拓扑排序+数学+DP【洛谷P1685】 游览的更多相关文章

  1. 拓扑排序+数学+DP【p1685】游览

    Description 顺利通过了黄药师的考验,下面就可以尽情游览桃花岛了! 你要从桃花岛的西头开始一直玩到东头,然后在东头的码头离开.可是当你游玩了一次后,发现桃花岛的景色实在是非常的美丽!!!于是 ...

  2. 洛谷 P1685 游览 解题报告

    P1685 游览 题目描述 顺利通过了黄药师的考验,下面就可以尽情游览桃花岛了! 你要从桃花岛的西头开始一直玩到东头,然后在东头的码头离开.可是当你游玩了一次后,发现桃花岛的景色实在是非常的美丽!!! ...

  3. HDU 5811 Colosseo(拓扑排序+单调DP)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5811 [题目大意] 给出 一张单向图,现在将其划分成了两个部分,问划分之后的点是否分别满足按照一定 ...

  4. CF-721C DAG图拓扑排序+费用DP

    比赛的时候写了个记忆化搜索,超时了. 后来学习了一下,这种题目应该用拓扑排序+DP来做. dp[][]保存走到[第i个节点][走过j个点]时所用的最短时间. pre[][]用前驱节点求路径 然后遍历一 ...

  5. 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 H. Skiing (拓扑排序+假dp)

    题目链接:https://nanti.jisuanke.com/t/16957 题目: In this winter holiday, Bob has a plan for skiing at the ...

  6. 树形DP 洛谷P2014 选课

    洛谷P2014 选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门 ...

  7. 【Luogu】P3116会议时间(拓扑排序,DP)

    题目链接 本题使用拓扑排序来规划DP顺序.设s[i][j]表示i步是否能走到j这个点,e[i][j]表示i步是否能走到j这个点——用第二条路径.因为要满足无后效性和正确性,只有第i个点已经全部更新完毕 ...

  8. Codeforces 919D Substring (拓扑排序+树形dp)

    题目:Substring 题意:给你一个有向图, 一共有n个节点 , m条变, 一条路上的价值为这个路上出现过的某个字符最多出现次数, 现求这个最大价值, 如果价值可以无限大就输出-1. 题解:当这个 ...

  9. P3387缩点(tarjan+拓扑排序+线性dp)

    题目描述 给定一个 n个点 m 条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次. 输入 ...

随机推荐

  1. dialog插件demo

    基本操作 默认窗体 new Dialog('这是一个默认对话框').show(); 非模态对话框 new Dialog('非模态对话框,可以打开多个!',{modal:false}).show(); ...

  2. PhoneGap应用图标icon和启动页面SplashScreen

    app/config.xml <icon gap:platform="android" gap:qualifier="ldpi" src="re ...

  3. Less known Solaris features: svccfg editprop (ZT)

    http://www.c0t0d0s0.org/archives/7675-Less-known-Solaris-features-svccfg-editprop.html Sometimes sma ...

  4. jdbcTemplate学习(四)

    前面三节讲了jdbcTemplate的使用,这一节讲解NamedParameterJdbcTemplate的使用方法: NamedParameterJdbcTemplate类是基于JdbcTempla ...

  5. C#改变LInqToSQL的引用地址,读取config的数据库字符串

    C#改变LInqToSQL的引用地址,读取config的数据库字符串修改Properties 下 Settings.Settings 下 Settings.Designer.cs 下 return ( ...

  6. ASP.NET 连接MySql数据库

    ASP.NET Mysql操作类 以下连接MySql数据库以VS2010为例,对于其他的编辑器也差不多 1. 我们需要在Mysql官网下载一个组件http://dev.mysql.com/downlo ...

  7. 在IDEA 中用maven创建web项目

    安装Maven 下载安装 去maven官网下载最新版. 解压到安装目录. 配置 右键桌面的计算机图标,属性–>高级系统设置–>环境变量,添加M2_HOME的环境变量,然后将该变量加入的PA ...

  8. ruby 变量和方法

    def say_goodnight(name) result ="Good night ." +name return result end def say_goodmorning ...

  9. 如何将.jpg图片 转换成.eps 格式图片

    在使用latex写作论文的时候,需要插入一些图片,但是往往有些图片不是eps格式的.虽然网上有如何插入jpg格式的图片方法,但是经过我实验后发现都不太管用.最后找到一个比较靠谱的方法,使用latx本身 ...

  10. oracle环境变量配置

    1.右键我的电脑--->属性--->高级系统设置 2.环境变量---->新建 总共配置三个变量(1) 变量名 ORACLE_HOME 变量值 G:\app\TH\product\11 ...