题目背景

人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向,兰兰同学在自学了一本神经网络的入门书籍后,提出了一个简化模型,他希望你能帮助他用程序检验这个神经网络模型的实用性。

题目描述

在兰兰的模型中,神经网络就是一张有向图,图中的节点称为神经元,而且两个神经元之间至多有一条边相连,下图是一个神经元的例子:

神经元〔编号为1)

图中,X1​−X3​是信息输入渠道,Y1​−Y2​是信息输出渠道,C1​表示神经元目前的状态,Ui​是阈值,可视为神经元的一个内在参数。

神经元按一定的顺序排列,构成整个神经网络。在兰兰的模型之中,神经网络中的神经元分为几层;称为输入层、输出层,和若干个中间层。每层神经元只向下一层的神经元输出信息,只从上一层神经元接受信息。下图是一个简单的三层神经网络的例子。

兰兰规定,CiC_iCi​服从公式:(其中nnn是网络中所有神经元的数目)

公式中的Wji​(可能为负值)表示连接jjj号神经元和i号神经元的边的权值。当 Ci​大于0时,该神经元处于兴奋状态,否则就处于平静状态。当神经元处于兴奋状态时,下一秒它会向其他神经元传送信号,信号的强度为Ci​。

如此.在输入层神经元被激发之后,整个网络系统就在信息传输的推动下进行运作。现在,给定一个神经网络,及当前输入层神经元的状态(Ci​),要求你的程序运算出最后网络输出层的状态。

输入输出格式

输入格式:

输入文件第一行是两个整数n(1≤n≤100)和p。接下来n行,每行2个整数,第i+1行是神经元i最初状态和其阈值(Ui​),非输入层的神经元开始时状态必然为0。再下面P行,每行由2个整数i,j及1个整数Wij​,表示连接神经元i,j的边权值为Wij​。

输出格式:

输出文件包含若干行,每行有2个整数,分别对应一个神经元的编号,及其最后的状态,2个整数间以空格分隔。仅输出最后状态大于0的输出层神经元状态,并且按照编号由小到大顺序输出。

若输出层的神经元最后状态均为 0,则输出 “NULL”。

输入输出样例

输入样例#1:

5 6
1 0
1 0
0 1
0 1
0 1
1 3 1
1 4 1
1 5 1
2 3 1
2 4 1
2 5 1
输出样例#1:

3 1
4 1
5 1

解析:

这就是道裸的拓扑。。。没什么好讲的。

参考代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 201
#define MOD 2520
#define E 1e-12
using namespace std;
queue<int> q;
struct rec{
int next,ver,egde;
}g[N<<];
struct an{
int tans,k;
}ans[N];
int head[N],tot,n,m,ing[N],cnt;
int u[N],c[N];
bool v[N<<];
void add(int x,int y,int val)
{
g[++tot].ver=y,g[tot].egde=val;
g[tot].next=head[x],head[x]=tot;
ing[y]++;
}
bool operator<(an a,an b){
return a.k<b.k;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d%d",&c[i],&u[i]);
for(int i=;i<=m;i++){
int x,y,val;
scanf("%d%d%d",&x,&y,&val);
add(x,y,val);
}
for(int i=;i<=n;i++)
if(ing[i]==) q.push(i);
while(q.size())
{
int x=q.front();q.pop();
if(c[x]<=) continue;
for(int i=head[x];i;i=g[i].next){
int y=g[i].ver,z=g[i].egde;
c[y]+=(c[x]*z);
if(--ing[y]==){
c[y]-=u[y];
q.push(y);
}
}
}
int k=;
for(int i=;i<=n;i++){
if(head[i]==&&c[i]>) printf("%d %d\n",i,c[i]),k++;
}
if(!k) puts("NULL");
return ;
}

P1038 神经网络[拓扑]的更多相关文章

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

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

  2. 洛谷P1038 神经网络

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

  3. 洛谷——P1038 神经网络

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

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

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

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

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

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

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

  7. Luogu P1038 神经网络

    qwq 拓扑排序模板题. 拓扑排序,是在一个$DAG$中,其拓扑排序为其所有结点的一个线性排序(答案不唯一). 该排序满足这样的条件——对于图中的任意两个结点$u$和$v$,若存在一条有向边从$u$指 ...

  8. 洛谷P1038神经网络题解

    题目 这个题不得不说是一道大坑题,为什么这么说呢,这题目不仅难懂,还非常适合那种被生物奥赛刷下来而来到信息奥赛的学生. 因此我们先分析一下题目的坑点. 1: 题目的图分为输入层,输出层,以及中间层. ...

  9. 洛谷P1038神经网络

    传送门啦 一个拓扑排序的题,感觉题目好难懂... #include <iostream> #include <cstdio> #include <cstring> ...

随机推荐

  1. 判断scrollView的滑动方向(二)

    在上一篇文章<判断scrollView的滑动方向>中谈到的第二种方法是根据滑动速率来判断的. 今天将通过滑动过程中的坐标差来判断 - (void)scrollViewDidScroll:( ...

  2. Python基础——numpy库的使用

    1.numpy库简介:    NumPy提供了许多高级的数值编程工具,如:矩阵数据类型.矢量处理,以及精密的运算库.专为进行严格的数字处理而产生. 2.numpy库使用: 注:由于深度学习中存在大量的 ...

  3. Java:HashMap的实现原理(JDK1.8)

    1.    HashMap概述: HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变 ...

  4. SAS学习笔记28 非参数秩和检验

    在总体分布已知的前提下对参数进行的检验,即参数检验方法(parametric test). 然而,在实际中有些资料总体分布类型未知,或者不符合参数检验的适用条件,这时可以使用不以特定的总体分布为前提, ...

  5. NIPS 2018 | 程序翻译新突破:UC伯克利提出树到树的程序翻译神经网络

    NIPS 2018 | 程序翻译新突破:UC伯克利提出树到树的程序翻译神经网络 机器之心 ​ 已认证的官方帐号 49 人赞同了该文章 选自arXiv,作者:Xinyun Chen.Chang Liu. ...

  6. C# Entity Framework The ObjectContext instance has been disposed and can no longer be used for operations that require a connection

    The ObjectContext instance has been disposed and can no longer be used for operations that require a ...

  7. (四)spring+servlet 整合

    一.Spring与Servlet的整合 1.1: 加入Spring的jar包.(要加web.jar包) 1.2: java工程中获取Spring的上下文对象. ApplicationContext c ...

  8. 本地虚拟机NAT模式下怎么设置才可以访问外网

    记:因为我要在本机虚拟机上安装Docker,结果发现虚拟机环境不能上网,是主机模式.我要调成net模式下才可以访问外网,这就需要怎么设置.下面文章记录一下. 在本机安装VMware软件后,系统中会自动 ...

  9. WebSocket协议探究(序章)

    一 WebSocket协议基于HTTP和TCP协议 与往常一样,进入WebSocket协议学习之前,先进行WebSocket协议抓包,来一个第一印象. WebSocket能实现客户端和服务器间双向.基 ...

  10. Autofac三种生命周期

    InstancePerLifetimeScope:同一个Lifetime生成的对象是同一个实例 SingleInstance:单例模式,每次调用,都会使用同一个实例化的对象:每次都用同一个对象: In ...