qwq

拓扑排序模板题。

拓扑排序,是在一个$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 神经网络的更多相关文章

  1. 洛谷P1038 神经网络==codevs1088 神经网络

    P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...

  2. 洛谷P1038 神经网络

    P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...

  3. 洛谷——P1038 神经网络

    P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...

  4. 洛谷 P1038 神经网络 Label:拓扑排序 && 坑 60分待查

    题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...

  5. 洛谷P1038 神经网络(bfs,模拟,拓扑)

    题目背景 人工神经网络(Artificial Neural NetworkArtificialNeuralNetwork)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸 ...

  6. 洛谷 P1038 神经网络

    题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...

  7. [NOIP2003] 提高组 洛谷P1038 神经网络

    题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...

  8. P1038 神经网络[拓扑]

    题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络的研究一直是当今 ...

  9. P1038 神经网络

    #include <bits/stdc++.h> using namespace std; const int maxn = 105; struct node { int situatio ...

随机推荐

  1. [AI开发]基于深度学习的视频多目标跟踪实现

    据我目前了解掌握,多目标跟踪大概有两种方式: Option1 基于初始化帧的跟踪,在视频第一帧中选择你的目标,之后交给跟踪算法去实现目标的跟踪.这种方式基本上只能跟踪你第一帧选中的目标,如果后续帧中出 ...

  2. 2019腾讯WXG移动客户端暑期实习面经

    微信这个比较迷,二面完官网流程灰了,但是过了一周多突然来三面,下午面完三面晚上HR面,第三天offer call, 莫名其妙过了 之前以为已经挂了,所以没有写面经,现在距一面已经快一个月了,只能还记得 ...

  3. GitHub的Repository权限将public转为private

    2019年1月7日,GitHub CEO Nat Friedman 于官方博客公开发文,称“New year, new GitHub”,宣布从此将免费无限地为普通用户提供私有仓库服务. 因此,我们可以 ...

  4. kafka的设计

    1.动机 设计 kafka 初衷,作为统一平台处理大公司的实时数据.所以 必须具有如下特性: 支持海量数据 高吞吐量 低延迟(实时性) 支持分区,分布式 容错 2.持久化 kafka 高度依赖 文件系 ...

  5. .NET Core TDD 前传: 编写易于测试的代码 -- 全局状态

    第1篇: 讲述了如何创造"缝".  "缝"(seam)是需要知道的概念. 第2篇, 避免在构建对象时写出不易测试的代码. 第3篇, 依赖项和迪米特法则. 本文是 ...

  6. Python基础(set集合)

    #Author : Kelvin #Date : 2019/1/5 13:20 #set集合的创建(创建后可修改) li=["kelvin",1,2,"zhangsan& ...

  7. .NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.预备知识:数据一致性 关于数据一致性的文章,园子里已经有很多了,如果你还不了解,那么可以通过以下的几篇文章去快速地了解了解,有个感性认 ...

  8. 《前端之路》之 this 的使用技巧总结

    06: JS 中 this 的使用技巧总结 this 是 JavaScript 中的关键字. 一.基本认识 在 JS 中我们把 this 关键字当作成一个 快捷方式,用来引用当前调用者. 解释上面这句 ...

  9. 深入理解Linux内核 学习笔记(1)

    1.用户和用户组 每个用户是一个或多个用户组的一名成员,组由唯一的用户组标识符(user group ID)标识.每个文件的相关权限也恰好与一个组相对应. root为超级用户, 2.模块 为了达到微内 ...

  10. 关于C#chart图表实现多条折线动态绑定数据的问题

    之前就已经实现了多条折线绑定数据并显示,但不是动态绑定,而是每一条数据都要进行一次绑定,个人觉得在解决实际问题时,这样的解决方法过于笨重且缺乏扩展性,这次主要是对代码进行优化,实现写一遍代码,无论数据 ...