题目链接:http://vjudge.net/contest/143062#problem/A

题意:一个人要从点1去到点2,中间还有很多点和很多条边。问你如果他每次走的边(a,b)都满足:a点到目标点的最短距离<b点到目标点的最短距离,那么他从点1出发到点2总共有多少条路径。

分析:

从家出发使用dijkstra,题目的条件"存在一条从B出发回家的路径,比所有从A出发的路径都短",实际上就是 d[B] < d[A],这样,就有:一条有向边 A->B,建立新图。从起点出发到终点有多少条路。DAG模型。

#include <bits/stdc++.h>
using namespace std; const int maxn = + ;
const int INF = 0x3f3f3f3f; 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];
bool done[maxn];
int d[maxn];
int p[maxn]; void init(int n)
{
this->n = n;
for(int i=; i<n; i++)
G[i].clear();
edges.clear();
} void AddEdge(int from,int to,int dist)
{
edges.push_back((Edge)
{
from,to,dist
});
m = edges.size();
G[from].push_back(m-);
} void dijkstra(int s)
{
priority_queue<HeapNode> Q;
for(int i=; i<n; i++)
d[i] = INF;
d[s] = ;
memset(done,,sizeof(done));
Q.push((HeapNode)
{
,s
});
while(!Q.empty())
{
HeapNode x = Q.top();
Q.pop();
int u = x.u;
if(done[u]) continue;
for(int i=; i<G[u].size(); i++)
{
Edge& e = edges[G[u][i]];
if(d[e.to]>d[u]+e.dist)
{
d[e.to] = d[u] + e.dist;
p[e.to] = G[u][i];
Q.push((HeapNode)
{
d[e.to],e.to
});
}
}
}
}
}; Dijkstra solve;
int d[maxn]; int dp(int u)
{
if(u==) return ;
int& ans = d[u];
if(ans>=) return ans;
ans = ;
for(int i=; i<solve.G[u].size(); i++)
{
int v = solve.edges[solve.G[u][i]].to;
if(solve.d[v]<solve.d[u]) ans +=dp(v);
}
return ans;
} int main()
{ int n,m;
while(scanf("%d",&n),n)
{
scanf("%d",&m);
solve.init(n);
for(int i=; i<m; i++)
{
int u,v,d;
scanf("%d%d%d",&u,&v,&d);
u--;
v--;
solve.AddEdge(u,v,d);
solve.AddEdge(v,u,d);
} solve.dijkstra();
memset(d,-,sizeof(d));
printf("%d\n",dp());
} return ;
}

Uva 10917的更多相关文章

  1. UVA - 10917 - Walk Through the Forest(最短路+记忆化搜索)

    Problem    UVA - 10917 - Walk Through the Forest Time Limit: 3000 mSec Problem Description Jimmy exp ...

  2. 训练指南 UVA - 10917(最短路Dijkstra + 基础DP)

    layout: post title: 训练指南 UVA - 10917(最短路Dijkstra + 基础DP) author: "luowentaoaa" catalog: tr ...

  3. UVA 10917 Walk Through the Forest SPFA

    uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem= ...

  4. UVa 10917 Dijkstra

    本来就是水题一道. 题意:一个人要从点1去到点2,中间还有很多点和很多条边.问你如果他每次走的边(a,b)都满足:a点到目标点的最短距离<b点到目标点的最短距离,那么他从点1出发到点2总共有多少 ...

  5. UVA 10917 Walk Through the Forest(dijkstra+DAG上的dp)

    用新模板阿姨了一天,换成原来的一遍就ac了= = 题意很重要..最关键的一句话是说:若走A->B这条边,必然是d[B]<d[A],d[]数组保存的是各点到终点的最短路. 所以先做dij,由 ...

  6. UVa 10917 A Walk Through the Forest

    A Walk Through the Forest Time Limit:1000MS  Memory Limit:65536K Total Submit:48 Accepted:15 Descrip ...

  7. uva 10917 Walk Through The Forest

    题意: 一个人从公司回家,他可以从A走到B如果从存在从B出发到家的一条路径的长度小于任何一条从A出发到家的路径的长度. 问这样的路径有多少条. 思路: 题意并不好理解,存在从B出发到家的一条路径的长度 ...

  8. UVa 10917 林中漫步

    https://vjudge.net/problem/UVA-10917 题意: 给出一个图,求出从1走到2共有多少种走法.前提是他只沿着满足如下条件的道路(A,B)走:存在一条从B出发回家的路径,比 ...

  9. uva 10917 最短路+dp

    https://vjudge.net/problem/UVA-10917 给出N点M边的无向图,没重边.对于点A,B,当且仅当从B到终点的最短路小于任何一条从A到终点的最短路时,才考虑从A走到B,否则 ...

随机推荐

  1. bzoj4562: [Haoi2016]食物链--记忆化搜索

    这道题其实比较水,半个小时AC= =对于我这样的渣渣来说真是极大的鼓舞 题目大意:给出一个有向图,求入度为0的点到出度为0的点一共有多少条路 从入读为零的点进行记忆化搜索,搜到出度为零的点返回1 所有 ...

  2. result结果集

    结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. 结果集读取数据 ...

  3. php中使用while遍历二维数组的方法

    <?php $contact=array( 'gao'=>array('ID'=>1,'name'=>'高某','company'=>'A公司','addr'=>' ...

  4. nyoj-204

    描述国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的. 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠.如果把B端接触镜面的话,魔镜会把这 ...

  5. FCM算法

    FCM算法是一种基于划分的聚类算法,它的思想就是使得被划分到同一簇的对象之间相似度最大,而不同簇之间的相似度最小.模糊C均值算法是普通C均值算法的改进,普通C均值算法对于数据的划分是硬性的,而FCM则 ...

  6. ios-高德、百度后台定位并上传服务器

    一.配置高德或百度的后台定位框架和代码(略). 二.配置app不被系统kill,定时获取地理位置信息,并上传服务器(AppDelegate里面). 具体代码: 1. - (void)applicati ...

  7. 奥迪--S5

    --型号:S5 --生产:奥迪进口 --价格:60-80W --发动机:3T 333马力 V6,机械增压 --变速箱:7档双离合 --气缸排列:V --总部:德国,英戈尔施塔特 --类型:中型车 -- ...

  8. 【转】基于 CoreText 实现的高性能 UITableView

    引起UITableView卡顿比较常见的原因有cell的层级过多.cell中有触发离屏渲染的代码(譬如:cornerRadius.maskToBounds 同时使用).像素是否对齐.是否使用UITab ...

  9. 贴片三极管-MOS管型号手册

    详细请查阅PDF: http://files.cnblogs.com/files/BinB-W/贴片三极管-MOS管型号手册.pdf

  10. UITableViewCell的选中时的颜色设置

    转自:http://hi.baidu.com/zhu410289616/item/0de0262910886011097508c2 1.系统默认的颜色设置 //无色 cell.selectionSty ...