P1038-神经网络【拓扑排序】
正题
题目链接: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-神经网络【拓扑排序】相关推荐
- P1038 神经网络(拓扑排序)
https://www.luogu.org/problem/P1038 题目背景 人工神经网络(Artificial Neural NetworkArtificialNeuralNetwork)是一种 ...
- 【图论】有向无环图的拓扑排序
1. 引言 有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环.常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度.拓扑排序是对DA ...
- C#实现有向无环图(DAG)拓扑排序
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在 ...
- hdu 5438 Ponds 拓扑排序
Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...
- usaco frame up(所有拓扑排序的输出)
先根据图建图再拓扑排序. /** ID: jinbo wu TASK: frameup LANG:C++ */ #include<bits/stdc++.h> using namespac ...
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...
- C/C++二级指针概念及应用(有向图的邻接表(拓扑排序)、有向网图的邻接表、树的孩子表示)
目录 一.概述 例1: 例2: 代码: 二.实例 1.有向图的邻接表(拓扑排序) 2.有向网图的邻接表 3.树的孩子表示 一.概述 二级指针:指向指针的指针.一般需要修改地址的时候会用到二级指针. 注 ...
- 极小连通子图和极大连通子图_强连通分量与拓扑排序
前言 由于GacUI里面开始多处用上拓扑排序,我决定把之前瞎JB搞出来的算法换掉,换成个正式的.之前我自己弄了个写起来很简单的算法,然后每一处需要用到的地方我就重新做一遍.当然这样肯定也是不行的,我觉 ...
- 图论之拓扑排序 poj 2367 Genealogical tree
题目链接 http://poj.org/problem?id=2367 题意就是给定一系列关系,按这些关系拓扑排序. #include<cstdio> #include<cstrin ...
- 用拓扑排序检测有向图中是否有环
目录 算法主要步骤 代码 测试数据 提示:由于拓扑排序的检测方式不涉及到边权或点权,所以拓扑序列中的正环和负环都能够被检测出来.检测可达负环可以用Bellman-Ford或者SPFA. 算法主要步骤 ...
最新文章
- 一些linux下的性能监测工具
- 处理 react_【学习教程】React 中阻止事件冒泡的问题
- 川大 NLP 博士生被华为以 200 万年薪录用!分享以下科研及论文写作经验...
- Andraoid 状态栏透明的方法
- Linux 下面安装nodejs
- Raft算法和开源实现
- (转)二分图最大匹配的König定理及其证明
- JQuery DataTables Editor---只修改页面内容
- 在linux centos 7上安装maven
- 学习easyui疑惑(四)
- c语言宏代码大全,C语言宏
- vbs脚本的基本使用
- vue高德地图H5定位及城市选择器控件实现详细教程
- 每个国家对应的语言Locale和国家代码对照表(转)
- 还没毕业,我就进了HR的黑名单!
- uni-app学习(四):带有下划线的标签选择
- 一颗专属于她的圣诞树
- 聊聊数据库~5.SQL运维上篇
- 每日思考第 70 期:人,往往会低估一件事的难度,而高估自己的能力
- 各个版本Microsoft Visual C++运行库下载
热门文章
- c语言格式字符If,C语言所有语句格式 C语言中的的if语句共有多少种格式?
- sm缩写代表什么意思_pe、PE在电气有代表什么意思,你发现没有,电气技术很有意思...
- 数据结构——二叉树的最长路径问题
- ffmpeg库编译加文字_1.编译ffmpeg库
- leetcode455. 分发饼干
- leetcode98. 验证二叉搜索树
- C++实现各种插入排序(直接,折半,希尔)
- 算法-二分搜索-找出最大值和最小值
- java基础知识——面向对象基本概念
- nginx php iconv,Nginx +PHP部署一