zoukankan      html  css  js  c++  java
  • JZOJ 1238. 自行车比赛

    题目

    Description

    自行车赛在一个很大的地方举行,有N个镇,用1到N编号,镇与镇之间有M条单行道相连,起点设在镇1,终点设在镇2。
    问从起点到终点一共有多少种不同的路线。两条路线只要不使用完全相同的道路就被认为是不同的。
     

    Input

    第一行两个整数:N和M(1<=N<=10000,1<=M<=100000),表示镇的数量和道路的数量。
    接下来M行,每行包含两个不同的整数A和B,表示有一条从镇A到镇B的单行道。
    两个镇之间有可能不止一条路连接。

    Output

    输出不同路线的数量,如果答案超过9位,只需输出最后9位数字。如果有无穷多的路线,输出“inf”。
     

    Sample Input

    输入1:
    6 7 
    1 3 
    1 4 
    3 2 
    4 2 
    5 6 
    6 5 
    3 4 
    
    输入2:
    6 8 
    1 3 
    1 4 
    3 2 
    4 2 
    5 6 
    6 5 
    3 4 
    4 3 
    
    输入3:
    31 60 
    1 3 
    1 3 
    3 4 
    3 4 
    4 5 
    4 5 
    5 6 
    5 6 
    6 7 
    6 7 
    … 
    … 
    … 
    28 29 
    28 29 
    29 30 
    29 30 
    30 31 
    30 31 
    31 2 
    31 2 
    

    Sample Output

    输出1:
    3
    
    输出2:
    inf
    
    输出3:
    073741824 
     

    Data Constraint

    分析

     

    • tarjan+拓扑,然后没有环的数据?
    • 直接拓扑?打爆了然后80不知道哪里错了
    • 记忆化搜索过了?

    代码

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<vector>
     4 #include<cstring>
     5 #define LL long long
     6 using namespace std;
     7 const LL N=1e4;
     8 const LL MOD=1e9;
     9 LL n,m,f[N+10];
    10 bool flag;
    11 vector<LL>g[N+10];
    12 LL dfs(LL u)
    13 {
    14     if(f[u]>=0) return f[u];
    15     f[u]=0;
    16     for(LL i=0;i<g[u].size();i++)
    17     {
    18         LL v=g[u][i];
    19         f[u]+=dfs(v);
    20         if(f[u]>=MOD) f[u]%=MOD,flag=1;
    21     }
    22     return f[u];
    23 }
    24 int main()
    25 {
    26     scanf("%lld%lld",&n,&m);
    27     for(LL i=1,u,v;i<=m;i++) scanf("%lld%lld",&u,&v),g[v].push_back(u);
    28     memset(f,-1,sizeof(f));
    29     f[1]=1;
    30     dfs(2);
    31     if(!flag){printf("%lld",f[2]);return 0;}
    32     LL x=1e8;
    33     while(x)
    34     {
    35         printf("%lld",f[2]/x);
    36         f[2]%=x;
    37         x/=10;
    38     }
    39     return 0;
    40 }

     

  • 相关阅读:
    把arguments转化成数组
    最小化重绘和重排
    选择器API
    事件委托
    WAhaha_hnu (zoj 2010 oct月赛)
    素数计数公式全面拉丁化改写小有改进Meissel公式梅塞尔Lehmer公式莱梅=勒梅尔筛法三种形式孟庆余公式(转载)
    NBUT 2013 Timed NOJ Training #005
    2013 腾讯马拉松初赛第一场
    hrboj 1683 树形DP
    哈尔滨2013校赛训练赛 4 解题思路
  • 原文地址:https://www.cnblogs.com/zjzjzj/p/11333058.html
Copyright © 2011-2022 走看看