codevs 1088 神经网络
Posted 一入OI深似海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codevs 1088 神经网络相关的知识,希望对你有一定的参考价值。
/* 这题目简直没谁了 我只想说 codevs上传题目的 专业素养在哪里 最起码别有错别字啊 0.0 咳咳 说正事 应该是考察拓扑排序的 统计出入度 然后依次处理每个入度为0的点 当然ci为0的可以不必要统计了 因为他不传递刺激 好好理解一下给出的公式 无非就是所有传入i的刺激与ci乘积累加 累加完事之后-ui 最后输出 出度为0的 */ #include<iostream> #include<cstdio> #include<cstring> #define maxn 110 using namespace std; int n,m,c[maxn],u[maxn],head[maxn],num; int in[maxn],out[maxn]; struct node { int u,v,pre,t; }e[maxn*maxn]; void Add(int from,int to,int dis) { num++; e[num].u=from; e[num].v=to; e[num].t=dis; e[num].pre=head[from]; head[from]=num; } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d%d",&c[i],&u[i]); for(int i=1;i<=m;i++) { int u,v,t; scanf("%d%d%d",&u,&v,&t); Add(u,v,t);in[v]++;out[u]++; } while(1) { int k=n+1; for(int i=1;i<=n;i++) if(in[i]==0&&c[i]>0) { in[i]--;k=i;break; } if(k==n+1)break; for(int i=head[k];i;i=e[i].pre) { in[e[i].v]--; c[e[i].v]+=e[i].t*c[k]; if(in[e[i].v]==0)c[e[i].v]-=u[e[i].v]; } } int falg=0; for(int i=1;i<=n;i++) if(out[i]==0&&c[i]>0) { falg=1; printf("%d %d\n",i,c[i]); } if(falg==0)printf("NULL"); return 0; }
以上是关于codevs 1088 神经网络的主要内容,如果未能解决你的问题,请参考以下文章
ZZNUOJ_C语言1088:手机短号 (多实例)(完整代码)
VSCode自定义代码片段14——Vue的axios网络请求封装