zoukankan      html  css  js  c++  java
  • p1229

    原来没看数据 打啦个暴力30分......;

    然后想了想用spfa优化了一下 结果20分......;

    书上说用拓扑 但我自己造的数据把拓扑完美推翻.......

    后来才看到题目上说的是n个代表路的相交处.....

    从新整理思路:       

          n为路的相交处   入度为0的 点只有起点 ,图不构成环 >>>推得   拓扑构图成立。

    然后就是两个关键的虱子了:

     最后记得要-1;

      

    代码

    #include<iostream>
    #include<cstring>
    #include<string>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    struct 
    {
        int v,y,next;
    }e[1000000];
    int lin[100000]={};
    int id[1000000]={};
    int len=0;
    int init(int x,int y,int v)
    {
        e[++len].next=lin[x];
        e[len].v=v;
        e[len].y=y;
        lin[x]=len;
        id[y]++;
    }
    int q[1000000];
    int sum[100000]={};
    int tt[1000000]={};
    int head=0,tail=0;
    int topsort(int x)
    {
        q[++tail]=x;
        while(head<tail)
        {
            head++;
            int w=q[head];
            for(int i=lin[w];i;i=e[i].next)
            {
                int y=e[i].y;
                id[y]--;
                sum[y]+=sum[w]+e[i].v*tt[w],sum[y]%=10000;
                tt[y]+=tt[w],tt[y]%=10000;
                if(id[y]==0)
                {
                    q[++tail]=y;
                }
            }
        }
        return 0;
    }
    int main()
    {
        //freopen("a.in","r",stdin);
        //freopen("a.out","w",stdout);
        int m,n,s,s1,t;
        cin>>n>>m>>s>>s1>>t;
        for(int i=1;i<=m;i++)
        {
            int a,b,c;
            cin>>a>>b>>c;
            init(a,b,c);
        }
        tt[s]=1;
        topsort(s);
        //cout<<tt[s1]<<endl;
        cout<<(sum[s1]+(tt[s1]-1)*t)%10000<<endl;
        return 0;
    }
  • 相关阅读:
    表格的增删改查
    选择省份时,自动显示对应省份的城市
    弹框提示用户输入
    dom
    css基础
    HTML基础
    B
    poj 1840 Eqs
    hdu 1166 敌兵布阵(线段树)
    poj 2586 Y2K Accounting Bug
  • 原文地址:https://www.cnblogs.com/Lazers/p/6479959.html
Copyright © 2011-2022 走看看