Luogu P1038 神经网络
拓扑排序模板题。
拓扑排序,是在一个$DAG$中,其拓扑排序为其所有结点的一个线性排序(答案不唯一)。
该排序满足这样的条件——对于图中的任意两个结点$u$和$v$,若存在一条有向边从$u$指向$v$,则在拓扑排序中$u$一定出现在$v$前面。
就好比一张流程图,必须完成这一步之前的所有步骤才能进行这一步。
代码实现:记录入度,每次走过一条边$(u,v)$将$v$的入度-1,入度为0时加入队列。
对于这道题,判断某个神经元是否兴奋(能继续传递)必须先走过到达这个神经元的每一条神经,恰好满足拓扑排序的定义。
注意:对于一个状态为负的神经元,需要将它的状态清零后加入队列(这样对后面不会有影响),否则如果不加入队列它后面点的入度没办法清零。
代码如下
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#define MogeKo qwq
using namespace std;
#include<queue>
const int maxn = ;
queue <int> q;
priority_queue < pair<int,int>,vector < pair<int,int> >,greater < pair<int,int> > > ans;
int n,p,x,y,z,cnt;
int c[maxn],u[maxn],in[maxn];
int to[maxn],head[maxn],nxt[maxn],val[maxn]; void add(int x,int y,int z){
to[++cnt] = y;
nxt[cnt] = head[x];
head[x] = cnt;
val[cnt] = z;
} void topo(){
for(int i = ;i <= n;i++)
if(!in[i])q.push(i);
while(!q.empty()){
int x = q.front();
q.pop();
if(!head[x])
if(c[x]>) ans.push( make_pair(x,c[x]));
for(int i = head[x];i;i = nxt[i]){
int y = to[i];
in[y]--;
c[y] += c[x]*val[i];
if(!in[y]){
c[y] -= u[y];
if(c[y]<) c[y] = ;
q.push(y);
}
}
}
} int main(){
scanf("%d%d",&n,&p);
for(int i = ;i <= n;i++)
scanf("%d%d",&c[i],&u[i]);
for(int i = ;i <= p;i++){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
in[y]++;
}
topo();
if(ans.empty()){
printf("NULL");
return ;
}
while(!ans.empty()){
printf("%d %d\n",ans.top().first,ans.top().second);
ans.pop();
}
return ;
}
Luogu P1038 神经网络的更多相关文章
- 洛谷P1038 神经网络==codevs1088 神经网络
P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...
- 洛谷P1038 神经网络
P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...
- 洛谷——P1038 神经网络
P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...
- 洛谷 P1038 神经网络 Label:拓扑排序 && 坑 60分待查
题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...
- 洛谷P1038 神经网络(bfs,模拟,拓扑)
题目背景 人工神经网络(Artificial Neural NetworkArtificialNeuralNetwork)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸 ...
- 洛谷 P1038 神经网络
题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...
- [NOIP2003] 提高组 洛谷P1038 神经网络
题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...
- P1038 神经网络[拓扑]
题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...
- P1038 神经网络
#include <bits/stdc++.h> using namespace std; const int maxn = 105; struct node { int situatio ...
随机推荐
- Unity User Group深圳站——Timeline & Cinemachine分享
报名说明:UUG深圳站,2月分享活动正式启动,1月29日中午12:00前报名可获赠Unity精美纪念礼物一份~ 关于Unity Unity 是一款多平台的综合型游戏开发工具,它的出现对蓬勃发展的全球游 ...
- spring集成shiro登陆流程(上)
上一篇已经分析了shiro的入口filter是SpringShiroFilter, 那么它的doFilter在哪儿呢? 我们看到它的直接父类AbstractShrioFilter继承了OncePerR ...
- Docker & ASP.NET Core (1):把代码连接到容器
和这种蛋糕一样,Docker的容器和镜像也是使用类似的分层文件系统构建而成的. 这样做的好处就是可以节省硬盘空间,也利于复用等等.因为Docker基于镜像创建容器的时候,其镜像是共享的:而且镜像里面的 ...
- load data infile
mysql> load data local infile 'd:/lw.txt' into table user (code,password,channelId);Query OK, 478 ...
- 图解 HTTP 的缓存机制 | 实用 HTTP
题图:by @joewakeford 一.序 Hi,大家好,我是承香墨影! HTTP 协议在网络知识中占据了重要的地位,HTTP 协议最基础的就是请求和响应的报文头(Header),大多数 Http ...
- NavigationViewDemo【和DrawerLayout搭配使用实现侧滑导航视图界面】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要记录NavigationView的使用,而一般情况下NavigationView是和DrawerLayout搭配使用的,还有To ...
- 强化学习(六)时序差分在线控制算法SARSA
在强化学习(五)用时序差分法(TD)求解中,我们讨论了用时序差分来求解强化学习预测问题的方法,但是对控制算法的求解过程没有深入,本文我们就对时序差分的在线控制算法SARSA做详细的讨论. SARSA这 ...
- Golang之轻松化解defer的温柔陷阱
目录 什么是defer? 为什么需要defer? 怎样合理使用defer? defer进阶 defer的底层原理是什么? 利用defer原理 defer命令的拆解 defer语句的参数 闭包是什么? ...
- Golang 入门 : 映射(map)
映射是一种数据结构,用于存储一系列无序的键值对,它基于键来存储值.映射的特点是能够基于键快速检索数据.键就像是数组的索引一样,指向与键关联的值.与 C++.Java 等编程语言不同,在 Golang ...
- Keepalived 的使用
1.什么是keepalived Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当w ...