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

    /*
    这题目简直没谁了 
    我只想说 codevs上传题目的 专业素养在哪里 最起码别有错别字啊
    0.0
    咳咳 说正事
    应该是考察拓扑排序的 
    统计出入度 然后依次处理每个入度为0的点 当然ci为0的可以不必要统计了 因为他不传递刺激 
    好好理解一下给出的公式 无非就是所有传入i的刺激与ci乘积累加
    累加完事之后-ui
    最后输出 出度为0的  
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define maxn 110
    using namespace std;
    int n,m,c[maxn],u[maxn],head[maxn],num;
    int in[maxn],out[maxn];
    struct node
    {
        int u,v,pre,t;
    }e[maxn*maxn];
    void Add(int from,int to,int dis)
    {
        num++;
        e[num].u=from;
        e[num].v=to;
        e[num].t=dis;
        e[num].pre=head[from];
        head[from]=num;
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
          scanf("%d%d",&c[i],&u[i]);
        for(int i=1;i<=m;i++)
          {
              int u,v,t;
              scanf("%d%d%d",&u,&v,&t);
              Add(u,v,t);in[v]++;out[u]++;
          }
        while(1)
          {
              int k=n+1;
              for(int i=1;i<=n;i++)
                if(in[i]==0&&c[i]>0)
                  {
                    in[i]--;k=i;break;
                }
            if(k==n+1)break;
            for(int i=head[k];i;i=e[i].pre)
              {
                  in[e[i].v]--;
                  c[e[i].v]+=e[i].t*c[k];
                  if(in[e[i].v]==0)c[e[i].v]-=u[e[i].v];
              }
          }
        int falg=0;
        for(int i=1;i<=n;i++)
          if(out[i]==0&&c[i]>0)
            {
              falg=1;
              printf("%d %d
    ",i,c[i]);
            }
        if(falg==0)printf("NULL");
        return 0;
    }
  • 相关阅读:
    InnoDB实现MVCC原理
    Python中定义函数时参数有默认值的小陷阱
    Python系统编程笔记
    Python中的字典
    Python中常见的字符串小笔试题
    Oracle常见名词解析
    Oracle数据库面试题【转载】
    Oracle日期语言修改
    Oracle日期时间函数大全
    Oracle数据库分页的三种方法
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/5635090.html
Copyright © 2011-2022 走看看