zoukankan      html  css  js  c++  java
  • P1038 神经网络

    传送门

    思路:

      直接用拓扑排序,套用题目给的公式就行了。。

    标程:

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<cstdlib>
    #include<string>
    #include<stack>
    #include<queue>
    #include<deque>
    #include<deque>
    #include<set>
    #include<map>
    using namespace std;
    #define maxn 10010
    typedef long long LL;
    LL st[maxn],head[maxn],n,m;
    LL top,in[maxn],out[maxn],cnt,C[maxn],U[maxn];//in[]记录入度,用来topo,out[]记录出度,记录输出层的神经(没有出度的点)
    struct hh
    {
        LL nex,to,dis;
    }t[maxn];
    inline LL read()
    {
        LL xs=0,kr=1;char ls;
        ls=getchar();
        while(!isdigit(ls))
        {
            if(!(ls^45))
                kr=-1;
            ls=getchar();
        }
        while(isdigit(ls))
        {
            xs=(xs<<1)+(xs<<3)+(ls^48);
            ls=getchar();
        }
        return xs*kr;
    }
    inline void add(LL nex,LL to,LL dis)
    {
        t[++cnt].nex=head[nex];
        t[cnt].to=to;
        t[cnt].dis=dis;
        head[nex]=cnt;
    }
    int main()
    {
        n=read();m=read();
        for(LL i=1;i<=n;i++)
        {
            C[i]=read();U[i]=read();
            if(C[i]) st[++top]=i;
        }
        LL x,y,z;
        for(LL i=1;i<=m;i++)
        {
            x=read();y=read();z=read();
            add(x,y,z);
            in[y]++;out[x]++;
        }
        LL u,v;
        while(top>0)
        {
            u=st[top--];
            if(C[u]<=0) continue;//C[u]<=0说明这个神经元没有活性,不会继续传递信息,跳过。 
            for(LL i=head[u];i;i=t[i].nex)
            {
                v=t[i].to;
                in[v]--;
                C[v]+=t[i].dis*C[u];//对于有活性的神经元,套用公式。 
                if(in[v]==0)//没有入度,扔回栈中,作为下一个要传递信息的神经元,更新活性 
                {
                    st[++top]=t[i].to;
                    C[v]-=U[v];
                }
            }
        }
        bool flag=false;
        for(LL i=1;i<=n;i++)
          if(!out[i]&&C[i]>0) printf("%lld %lld
    ",i,C[i]),flag=true;//输出层的神经元出度为 0,对于活性≤0的神经元,再次跳过
        if(!flag) printf("NULL
    ");//没有一个输出层的神经元有活性,输出“NULL” 
    }
  • 相关阅读:
    mysql常用函数
    mysql中utf8_bin、utf8_general_ci、utf8_general_cs编码区别
    JS 中的return false的作用
    css3 animation动画执行结束,停顿几秒后重新开始执行
    (原)人月神话-阅读笔记
    (原创)cocosStudio: text设置颜色问题
    (原创)cocos-js js调用android
    (原创)cocos-js 实现震屏效果
    (转)Cocos2d-js中使用Shader方法--以一个简单的波纹效果为例:
    (转)Cocos2dx-JS 在 Sprite 上使用 Shader
  • 原文地址:https://www.cnblogs.com/lck-lck/p/9819269.html
Copyright © 2011-2022 走看看