摘要: 题意:jimmy下班需要穿过一个森林。劳累一天后在森林中漫步是见非常惬意的事,所以他打算每天沿着不同的路径回家,欣赏不同的风景。但他也不想太晚回家,因此他不打算走回头路。换句话说,他只沿(A,B)走,存在一条从B出发回家的路径比所有从A出发回家的路径都短。你的任务是计算一共有多少条不同的回家路径分析:用dijkstra计算家到各个点的最短路径,则当d[i]>d[j],则有一条i-->j的路可走,因此形成了一个新图,且是DAG图。故可用动态规划计算方案。(使用记忆化搜索)// File Name: 2662.cpp// Author: zlbing// Created Time: 2 阅读全文
posted @ 2013-02-06 22:40 z.arbitrary 阅读(420) 评论(0) 推荐(0)
摘要: struct Edge{ int from,to,dist;};struct HeapNode{ int d,u; bool operator <(const HeapNode &rhs)const{ return d>rhs.d; }};struct Dijkstra{ int n,m;//点和边数 vector<Edge>edges;//边列表 vector<int>G[MAXN];//每个节点出发的边编号(从0开始编号) bool done[MAXN];//是否永久标记 int d[MAXN];//s到各个点的距离 ... 阅读全文
posted @ 2013-02-06 18:35 z.arbitrary 阅读(194) 评论(0) 推荐(0)
摘要: 题意:在Iokh市中,机场快线是市民从市内去机场的首选交通工具。机场快线分为经济线和商业线两种,线路,速度和价钱都不同。你有一张商业线车票,可以做一站商业线,而其他时候只能乘坐经济线。假设换乘时间忽略不计,你的任务是找一条去机场最快的路线。。分析:枚举商业线T(a,b),则总时间为f(a)+T(a,b)+g(b);f和g用两次dijkstra来计算,以S为起点的dijkstra和以E为起点的dijkstra;// File Name: 11374.cpp// Author: zlbing// Created Time: 2013/2/6 13:29:09#include<iostream 阅读全文
posted @ 2013-02-06 18:32 z.arbitrary 阅读(1463) 评论(0) 推荐(1)