当前位置: 首页 > news >正文

洛谷 P1038 [NOIP2003 提高组] 神经网络(拓扑排序)

题目传送门

感觉这道题需要我们高超的语文阅读水平……

解题思路

我们发现要计算一个细胞的状态值(c_i),就需要先算出有边指向它的其他细胞对答案的贡献;

这是有拓扑序的,所以我们想到拓扑排序

题目中说了,我们要从 c_i>0 的点开始进行拓扑排序,然后把它指向的细胞的贡献加上即可(就是拓扑排序的板子)。

注意,起点不要减掉阈值(本题最坑人的地方)。

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,p;
int c[101],u[101];
int rd[101],cd[101];
struct edge{int to,w;
};
vector<edge> g[101];
void tuopu()
{queue<int> q;for(int i=1;i<=n;i++){if(c[i]>0)q.push(i);elsec[i]-=u[i];}while(!q.empty()){int x=q.front();//c[x]-=u[x];q.pop();for(auto y:g[x]){rd[y.to]--;if(c[x]>0)c[y.to]+=y.w*c[x];if(rd[y.to]==0){q.push(y.to);}}}
}
vector<pair<int,int> > ans;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>p;for(int i=1;i<=n;i++){cin>>c[i]>>u[i];}int u,v,w;for(int i=1;i<=p;i++){cin>>u>>v>>w;g[u].push_back({v,w});rd[v]++;cd[u]++;}tuopu();bool bj=0;for(int i=1;i<=n;i++){if(cd[i]==0){if(c[i]>0){bj=1;ans.push_back(make_pair(i,c[i]));}}}if(bj){for(auto y:ans){cout<<y.first<<" "<<y.second<<endl;}}else{cout<<"NULL";}return 0;
}


http://www.mrgr.cn/news/54651.html

相关文章:

  • 重置时把el-tree树节点选中状态取消
  • 设计模式的六大原则
  • 贪心day3
  • Uiautomator2与weditor配置一直报错咋办
  • Pencils Protocol 用户特权?持有 DAPP 将获 Scroll 生态空投!
  • VMware虚拟机三种网络模式详解
  • Redis之持久化机制和实现原理
  • C/C++程序员为什么要了解汇编?汇编语言的好处与学习路径详解
  • Python进阶语法
  • Vue request请求拦截 全局拦截Promise后 api请求捕获异常catch
  • day3:管道,解压缩,vim
  • 写一段代码判断素数的函数,从主函数中输出一个整数,判断它是否为素数。
  • ret2reg
  • 分布式缓存的基本概念入门以及如何保证数据一致性
  • Mysql数据库压缩版的卸载、安装及初始化
  • c++ 对象作用域
  • Java 类和对象详解(下)
  • Leetcode 3327. Check if DFS Strings Are Palindromes
  • 【动态规划】【路径问题】下降路经最小和、最小路径和、地下城游戏
  • 15. 三数之和 双指针经典题目
  • 【MySQL】to_date()日期转换
  • 模拟器芯片巨头 ADI 亚德诺半导体 Analog Devices 产品的应用介绍和物料推荐(六)
  • 【软件工程】过程和生命周期的建模
  • Android常用C++特性之std::bind
  • ArkTS 中Tabs 页签内引入页面的 onPageShow和onPageHide 没有执行,是什么原因?怎么解决?
  • python语言入门必须要学习的模块化编程案例游戏---画图案例(三)【源码大全】