SJTU-ACM-1528
来源:互联网 发布:手机淘宝买东西流程 编辑:程序博客网 时间:2024/06/05 05:34
1528. 小天狼星的访问
Description
经过数月的准备,小天狼星,一个被诬陷的杀人犯,准备闯入霍格沃茨见见他的侄子。霍格沃茨的地图呈一颗树状分布。每个房间由若干跳过道通向其他房间。由于小天狼星想尽快找到哈利:
他会从房间0开始找
他总是会选择离自己最近的房间找,如果仍有多个房间,从序号最小的开始找。
如果没找到,则继续选最近的房间深入。
如果已没有房间可走,则返回到上一个房间,继续选择(往回走也算时间哦)。
当然,除了往回走,小天狼星是不会去一个房间两次的。
Input Format
第1行:n,p,n表示房间个数,p表示哈利所在的房间。
第2 - n行:s,t,l,表示从房间s到房间t的时间为l(0 <= s < t < n)。
Output Format
1行:找到哈利的时间(开始时间为0)。
Sample Input
5 20 1 10 2 21 3 31 4 4
Sample Output
18
Hint
对40%的数据:0 < p <= n < 1000。
对100%的数据:0 < p <= n < 100000。
对100%的数据:0 < l <= 2^31-1。
如题。
大体上就是DFS吧。应该也用不到什么多高深的技巧。
我代码里面是首先排序来着。因为感觉要求并不是很高。简单的排了一下就AC了.
没有能一次ac的主要原因在于对100%的数据:0 < l <= 2^31-1。
也就是说int需要改成long long才对。
#include <iostream>#include <fstream>#include<cstdio>#include<cstdlib>#include<vector>using namespace std;#define lop(n,i) for(int i=0;i<n;i++)#define ci(t) (cin>>t)#define co(t) (cout<<t)struct elem{ int n; long long t; elem(int num1=-1,int num2=-1):n(num1),t(num2) { }};struct Node{ vector<elem>no; long long nt; Node () { nt=0; } //time now};Node s[100009];int n,p;void dfs(int x,int e){//cout<<"x is: "<<x<<" time is: "<<s[x].nt<<endl; if(x==e) { cout<<s[x].nt<<endl; exit(0); } if (s[x].no.size()==0)return; for (int i=0;i<s[x].no.size();i++) { s[s[x].no[i].n].nt+=(s[x].no[i].t+s[x].nt); dfs(s[x].no[i].n,e); s[x].nt=(s[x].no[i].t+s[s[x].no[i].n].nt); }}int main(){ cin>>n>>p; int fi,se; long long tt; lop(n-1,i) { cin>>fi>>se>>tt; s[fi].no.push_back(elem(se,tt)); } lop(n,i) { if (s[i].no.size()==0)continue;//.... else { for (int k=0;k<s[i].no.size();k++) { for (int j=k+1;j<s[i].no.size();j++) { if (s[i].no[k].t>s[i].no[j].t) { swap(s[i].no[k],s[i].no[j]); } else if (s[i].no[k].t==s[i].no[j].t&&s[i].no[k].n>s[i].no[j].n){ swap(s[i].no[k],s[i].no[j]); } } } } } dfs(0,p); //system("pause"); return 0;}
没有用快排和堆排也过了。注意一下输入输出和边界的问题。
0 0
- SJTU-ACM-1528
- sjtu-acm-1033
- sjtu-acm-1224
- SJTU-ACM-1530
- sjtu
- 离散数学【sjtu】
- sjtu,fudan,zju,nju
- Complain @ CS department, SJTU
- Courses in CS @ SJTU
- Fedora15 sjtu源
- SJTU OJ.1204
- SJTU OJ.1204_new
- SJTU 1319. countColors
- 【数据结构】SJTU OJ 1237
- 【数据结构】SJTU OJ 1233
- 【数据结构】SJTU OJ 1234
- sjtu 1005 数独
- sjtu 1006 求和游戏
- NOIP2015总结
- 在Linux或mac上配置github提交代码到github仓库
- find命令的xargs参数的使用---Linux学习笔记
- 设计模式之--代理模式
- json数据解析总结
- SJTU-ACM-1528
- install jekyll
- 使用Maven构建Java web项目
- 设计模式系列-原型模式
- 【C语言】递归实现栈的逆序及排序
- markdown写博客工具
- 求职应聘时面试常见问题1
- Struts2基础复习系列(3)
- 怎样去阅读技术书籍