称号:生命是非常多的选择。现在给你一些选择(0~n-1),和其他选项后,分支数每一次选择,选择共求。

分析:dp,图论。假设一个状态也许是选择的数量0一个是,代表死亡,计数的路径数将达到所有死亡可以去除。

用一个状态数组记录到达每一个选择的路径数,它等于能到达它的前驱节点的路径加和。

稀疏图,使用邻接表储存。初始是节点0的路径条数为1。代表出生。

说明:没有给数据范围略坑啊,RE一次。WA一次。╮(╯▽╰)╭。

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio> using namespace std; int sums[15000];
int deat[15000]; typedef struct tnode
{
int point;
tnode *next;
}node;
node* H[15000];
node E[150000];
int e_size = 0; void initial()
{
memset( H, 0, sizeof(H) );
memset( E, 0, sizeof(E) );
e_size = 0;
} void addedge( int a, int b )
{
E[e_size].point = b;
E[e_size].next = H[a];
H[a] = &E[e_size ++];
} int main()
{
int n,m,c,t = 1;
while ( ~scanf("%d",&n) ) {
if ( t ++ > 1 ) printf("\n");
initial();
memset( sums, 0, sizeof(sums) );
for ( int i = 0 ; i < n ; ++ i ) {
scanf("%d",&m);
for ( int j = 0 ; j < m ; ++ j ) {
scanf("%d",&c);
addedge( i, c );
}
if ( !m ) deat[i] = 1;
else deat[i] = 0;
} sums[0] = 1;
for ( int i = 0 ; i < n ; ++ i )
for ( node* p = H[i] ; p ; p = p->next )
sums[p->point] += sums[i];
int sum = 0;
for ( int i = 1 ; i < n ; ++ i )
if ( deat[i] )
sum += sums[i]; printf("%d\n",sum);
}
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

UVa 988 - Many Paths, One Destination的更多相关文章

  1. UVA 10564 十 Paths through the Hourglass

     Paths through the Hourglass Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & % ...

  2. UVA 10000 Longest Paths (SPFA算法,模板题)

    题意:给出源点和边,边权为1,让你求从源点出发的最长路径,求出路径长度和最后地点,若有多组,输出具有最小编号的最后地点. #include <iostream> #include < ...

  3. UVA 125 Numbering Paths

    题目大意:给定n条单向边,求图中任意两点的连通路径的数目.其中点是从0-输入中出现的最大的点. 可以用floyd-warshall算法或者dfs. for(int k = 0; k < n; k ...

  4. UVa 10564 DP Paths through the Hourglass

    从下往上DP,d(i, j, k)表示第(i, j)个格子走到底和为k的路径条数. 至于字典序最小,DP的时候记录一下路径就好. #include <cstdio> #include &l ...

  5. How an Event Enters a Cocoa Application

    How an Event Enters a Cocoa Application An event is a low-level record of a user action that is usua ...

  6. On-demand diverse path computation for limited visibility computer networks

    In one embodiment, a source device detects a packet flow that meets criteria for multi-path forwardi ...

  7. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  8. 01背包(类) UVA 10564 Paths through the Hourglass

    题目传送门 /* 01背包(类):dp[i][j][k] 表示从(i, j)出发的和为k的方案数,那么cnt = sum (dp[1][i][s]) 状态转移方程:dp[i][j][k] = dp[i ...

  9. LeetCode 1059. All Paths from Source Lead to Destination

    原题链接在这里:https://leetcode.com/problems/all-paths-from-source-lead-to-destination/ 题目: Given the edges ...

随机推荐

  1. java面向对象下:Java数据库编程

    19.Java数据库编程: JDBC概述:        JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...

  2. ANSI C中取得结构体字段偏移量的常用方法

    来自http://blog.chinaunix.net/u2/62910/showart_492571.html 假设在ANSI C程序中定义了一个名为MyStruct的结构类型,其中有一个名为MyF ...

  3. crm2011js操作IFRAME和选项集

  4. freemark换行输出

    <!--附件图片-->              <#if attatList? exists>       <#if (attatList?size>0)> ...

  5. Mono和Jexus并且部署ASP.NET MVC3、4、5和WebApi

    Linux(CentOS 6.7)下配置Mono和Jexus并且部署ASP.NET MVC3.4.5和WebApi(跨平台) 1.开篇说明 a. 首先我在写这篇博客之前,已经在自己本地配置了mono和 ...

  6. Enum的简单了解

    Enum可以将一组具名的有限集合创建成一种新的类型,而这些具名的值可以作为常规的程序组件使用. 在创建enum时,编译器会为你生成一个相关的类,这个类继承自java.lang.Enum,所以enum本 ...

  7. poj-3791-An Easy Game-记忆化搜索

    dp[i][j]:还有i个不同样的位置,还能走j步,一共同拥有多少种走法. 非常明显 dp[i][j]=sigm(dp[i-k][j-1]*c[i][k]*c[n-i][m-k]); 用记忆化搜索记忆 ...

  8. 总结文件操作函数-文件夹(三)-C语言

    获取.改变当前文件夹: 原型为: #include <unistd.h>   //头文件 char *getcwd(char *buf, size_t size); //获取当前文件夹.相 ...

  9. select下拉菜单反显不可改动,且submit能够提交数据

    首先通过后台funcA()将下拉菜单反显不可改动的数据response到disable.jsp页面,disable.jsp: <script> var data1=${result.obj ...

  10. 全面总结:matlab怎么做漂亮的图

    源地址:http://blog.csdn.net/ccxcau/article/details/7362764 MATLAB受到控制界广泛接受的一个重要原因是因为它提供了方便的绘图功能.本章主要介绍2 ...