正题

题目链接:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1038


题目大意

有n个点,输入点给出权值,其余点的权值为

Ci=∑i,j∈EWi,jCj−UiCi=∑i,j∈EWi,jCj−UiC_i=\sum_{i,j\in E}W_{i,j}C_j-U_i

Ci<=0Ci<=0C_i的话就不算
求输出层的权值


解题思路

求出一个点之前要求出到达他的所有点,所以我们用拓扑序计算就好了。


code

#include<cstdio>
#include<queue>
#define N 101
using namespace std;
struct node{int to,next,w;
}a[N*N];
int tot,n,m,in[N],ls[N],c[N],u,x,y,w;
queue<int> q;
void addl(int x,int y,int c)//加边
{a[++tot].to=y;a[tot].next=ls[x];a[tot].w=c;ls[x]=tot;in[y]++;
}
void bfs()
{while(!q.empty()){int x=q.front();if(c[x]>0){for(int i=ls[x];i;i=a[i].next){int y=a[i].to;in[y]--;c[y]+=a[i].w*c[x];//计算权值if(!in[y])//权值已经计算玩q.push(y);}}else{for(int i=ls[x];i;i=a[i].next){int y=a[i].to;in[y]--;if(!in[y])q.push(y);}         }//为0不计算权值q.pop();}
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d%d",&c[i],&u);if(c[i]) q.push(i);else c[i]-=u;}for(int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&w);addl(x,y,w);}bfs();bool flag=true;for(int i=1;i<=n;i++)if(!ls[i]) {if(c[i]>0)printf("%d %d\n",i,c[i]),flag=false;}if(flag) printf("NULL");
}

P1038-神经网络【拓扑排序】相关推荐

  1. P1038 神经网络(拓扑排序)

    https://www.luogu.org/problem/P1038 题目背景 人工神经网络(Artificial Neural NetworkArtificialNeuralNetwork)是一种 ...

  2. 【图论】有向无环图的拓扑排序

    1. 引言 有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环.常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度.拓扑排序是对DA ...

  3. C#实现有向无环图(DAG)拓扑排序

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在 ...

  4. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  5. usaco frame up(所有拓扑排序的输出)

    先根据图建图再拓扑排序. /** ID: jinbo wu TASK: frameup LANG:C++ */ #include<bits/stdc++.h> using namespac ...

  6. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  7. C/C++二级指针概念及应用(有向图的邻接表(拓扑排序)、有向网图的邻接表、树的孩子表示)

    目录 一.概述 例1: 例2: 代码: 二.实例 1.有向图的邻接表(拓扑排序) 2.有向网图的邻接表 3.树的孩子表示 一.概述 二级指针:指向指针的指针.一般需要修改地址的时候会用到二级指针. 注 ...

  8. 极小连通子图和极大连通子图_强连通分量与拓扑排序

    前言 由于GacUI里面开始多处用上拓扑排序,我决定把之前瞎JB搞出来的算法换掉,换成个正式的.之前我自己弄了个写起来很简单的算法,然后每一处需要用到的地方我就重新做一遍.当然这样肯定也是不行的,我觉 ...

  9. 图论之拓扑排序 poj 2367 Genealogical tree

    题目链接 http://poj.org/problem?id=2367 题意就是给定一系列关系,按这些关系拓扑排序. #include<cstdio> #include<cstrin ...

  10. 用拓扑排序检测有向图中是否有环

    目录 算法主要步骤 代码 测试数据 提示:由于拓扑排序的检测方式不涉及到边权或点权,所以拓扑序列中的正环和负环都能够被检测出来.检测可达负环可以用Bellman-Ford或者SPFA. 算法主要步骤 ...

最新文章

  1. 一些linux下的性能监测工具
  2. 处理 react_【学习教程】React 中阻止事件冒泡的问题
  3. 川大 NLP 博士生被华为以 200 万年薪录用!分享以下科研及论文写作经验...
  4. Andraoid 状态栏透明的方法
  5. Linux 下面安装nodejs
  6. Raft算法和开源实现
  7. (转)二分图最大匹配的König定理及其证明
  8. JQuery DataTables Editor---只修改页面内容
  9. 在linux centos 7上安装maven
  10. 学习easyui疑惑(四)
  11. c语言宏代码大全,C语言宏
  12. vbs脚本的基本使用
  13. vue高德地图H5定位及城市选择器控件实现详细教程
  14. 每个国家对应的语言Locale和国家代码对照表(转)
  15. 还没毕业,我就进了HR的黑名单!
  16. uni-app学习(四):带有下划线的标签选择
  17. 一颗专属于她的圣诞树
  18. 聊聊数据库~5.SQL运维上篇
  19. 每日思考第 70 期:人,往往会低估一件事的难度,而高估自己的能力
  20. 各个版本Microsoft Visual C++运行库下载

热门文章

  1. c语言格式字符If,C语言所有语句格式 C语言中的的if语句共有多少种格式?
  2. sm缩写代表什么意思_pe、PE在电气有代表什么意思,你发现没有,电气技术很有意思...
  3. 数据结构——二叉树的最长路径问题
  4. ffmpeg库编译加文字_1.编译ffmpeg库
  5. leetcode455. 分发饼干
  6. leetcode98. 验证二叉搜索树
  7. C++实现各种插入排序(直接,折半,希尔)
  8. 算法-二分搜索-找出最大值和最小值
  9. java基础知识——面向对象基本概念
  10. nginx php iconv,Nginx +PHP部署一