NOIP2003 神经网络
来源:互联网 发布:电脑打字软件叫什么 编辑:程序博客网 时间:2024/05/13 05:20
题目:http://www.luogu.org/problem/show?pid=1038#
分析:以拓扑序进行bfs。我就说两点,只有f[i]>0时才会传递给子节点,只输出大于0的无解要输出NULL!
代码:
#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#include <vector>using namespace std;const int Tmax=105,Tmax2=2505;struct edge{ int v; long long int w;};edge E[Tmax2];int n,m,in[Tmax];long long int u[Tmax],f[Tmax];bool ok=false;queue<int> Q;vector<int> G[Tmax];void bfs(){ int i,x,len,vv; for(i=1;i<=n;i++) if(f[i]!=0) Q.push(i); else f[i]=-u[i]; while(!Q.empty()) { x=Q.front(); Q.pop(); len=G[x].size(); if(f[x]<=0) continue; for(i=0;i<len;i++) { vv=E[G[x][i]].v; f[vv]+=E[G[x][i]].w*f[x]; in[vv]--; if(in[vv]==0) Q.push(vv); } } return;}int main(){ int i,a; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) scanf("%lld%lld",&f[i],&u[i]); for(i=1;i<=m;i++) { scanf("%d%d%lld",&a,&E[i].v,&E[i].w); G[a].push_back(i); in[E[i].v]++; } bfs(); for(i=1;i<=n;i++) if(G[i].size()==0&&f[i]>0){ printf("%d %lld\n",i,f[i]); ok=true; } if(!ok) printf("NULL\n"); return 0;}
0 0
- NOIP2003 神经网络
- NOIP2003 神经网络
- NOIP2003 神经网络
- 【NOIP2003】神经网络
- noip2003神经网络【Pascal】
- NOIP2003神经网络题解
- NOIP2003提高组之神经网络
- 拓扑排序之NOIP2003神经网络
- 拓扑排序 [NOIP2003]神经网络 T1
- 洛谷 P1038 [NOIP2003 T1] 神经网络
- 【NOIP2003 提高组 T1 神经网络】
- ACM 104. [NOIP2003] 神经网络(拓扑排序)
- noip2003 神经网络 (拓扑排序,深搜)
- NOIP2003 提高组 复赛 network 神经网络
- 2017-03-04 【NOIP2003】神经网络 模拟
- NOIP2003(洛谷 P1038 )神经网络 COGS 104
- LuoguP1038[NOIP2003] 神经网络 解题报告【拓扑排序+DP/递推】
- [NOIP2003]逻辑推理
- Yii 执行模型save方法时数据为空
- VIM命令指南
- iphone用Xcode6的Leaks检测内存泄漏
- java保留小数
- Leetcode100: Container With Most Water
- NOIP2003 神经网络
- SQL UNION 和 UNION ALL 操作符 高级编程
- 常用术语
- Objc-C 知识点回顾 二 实例变量 、方法
- 栈的创建和部分操作
- bufferevent:概念和入门(libevent参考手册第六章)
- TextView 设置不同的颜色,点击响应不同的操作。
- 20150910九九乘法表
- android引导页面