求出家到其他点的最短路径,题目的条件变成了u->v不是回头路等价于d[u]>d[v]。

然后根据这个条件建DAG图,跑dp统计方案数,dp[u] = sum(dp[v])。

#include<bits/stdc++.h>
using namespace std; const int maxn = , maxm = ;
struct Edge
{
int v,w,nxt;
}; #define PB push_back
vector<Edge> edges;
vector<int> G[maxn];
int head[maxn];
int d[maxn]; void addEdge(int u,int v,int w)
{
edges.PB({v,w,head[u]});
head[u] = edges.size()-;
} void init()
{
memset(head,-,sizeof(head));
edges.clear();
} typedef pair<int,int> Node;
#define fi first
#define se second
void dijkstra(int s = )
{
memset(d,0x3f,sizeof(d));
priority_queue<Node,vector<Node>,greater<Node> > q;
q.push(Node(d[s] = ,s));
while(q.size()){
Node x = q.top(); q.pop();
int u = x.se;
if(x.fi != d[u]) continue;
for(int i = head[u]; ~i ; i = edges[i].nxt){
Edge &e = edges[i];
if(d[e.v] > d[u]+e.w){
d[e.v] = d[u]+e.w;
q.push(Node(d[e.v],e.v));
}
}
}
} int dp[maxn];
int dfs(int u)
{
int &ans = dp[u];
if(~ans) return ans;
if(u == ) return ans = ;
ans = ;
for(int i = ; i < (int)G[u].size(); i++){
ans += dfs(G[u][i]);
}
return ans;
} void rebuild(int n)
{
for(int i = ; i < n; i++) G[i].clear();
for(int u = ; u < n; u++){
for(int i = head[u]; ~i; i = edges[i].nxt){
int v = edges[i].v;
if(d[v] < d[u]) G[u].PB(v);
}
}
} int main()
{
//freopen("in.txt","r",stdin);
int n,m;
while(scanf("%d%d",&n,&m),n){
init();
while(m--){
int u,v,w; scanf("%d%d%d",&u,&v,&w); u--;v--;
addEdge(u,v,w); addEdge(v,u,w);
}
dijkstra();
rebuild(n);
memset(dp,-,sizeof(dp));
printf("%d\n",dfs());
}
return ;
}

最新文章

  1. MySQL 5.7 学习:功能性能的提升
  2. 【图像处理】【SEED-VPM】1.注意点
  3. asp.net mvc 模型验证注解,表单提交
  4. 学的一点点ps
  5. Eclipse插件SVN配置
  6. [JS11] 状态栏滚动
  7. Intellij idea安装设置
  8. 在XAF应用程序使用现有的数据库?
  9. 玩转Android之加速度传感器的使用,模仿微信摇一摇
  10. World Wind Java开发之十五——载入三维模型
  11. Troubleshooting:oVirt-engine
  12. linux虚拟文件系统2
  13. MVC源码解析 - HttpRuntime解析
  14. Oracle RAC环境下定位并杀掉最终阻塞的会话
  15. 10_27_requests模块
  16. MySQL面试题中:主从同步部署介绍
  17. 关于Python打包运行的一些思路
  18. Ionic 使用karma进行单元测试
  19. JAVA设计模式——第 4 章 多例模式【Multition Pattern】(转)
  20. MSSQLid清零

热门文章

  1. Cocos2d-x 屏幕适配新解(比较全面比较详细)
  2. django使用QQ企业邮箱发送邮件
  3. Cookie和Session(3)
  4. 序列化框架MJExtension详解 + iOS ORM框架
  5. HDU2824【欧拉函数性质】
  6. bzoj 5120: [2017国家集训队测试]无限之环【最小费用最大流】
  7. 在mpvue框架中使用Vant WeappUI组件库的注意事项
  8. 新建Podfile命令
  9. SecureCRT 退格键等不好用
  10. Qt 进程和线程之二:启动线程