社区讨论

建议添加hack数据(违规自删)

P1038[NOIP 2003 提高组] 神经网络参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mlp6qmke
此快照首次捕获于
2026/02/16 21:03
3 天前
此快照最后确认于
2026/02/17 11:12
前天
查看原帖
针对的错误做法:当 Ci0C_i \le 0 时,不对出边终点的入度减去一。
错误代码
CPP
#include <bits/stdc++.h>
using namespace std;
typedef long long L;

L n, p, c[105], U[105], d[105], u, v, w;
vector<pair<L, L>> g[105];
queue<L> q;

int main() {
  cin >> n >> p;
  for (int i = 1; i <= n; ++i)
    cin >> c[i] >> U[i];
  for (int i = 1; i <= p; ++i) {
    cin >> u >> v >> w;
    g[u].push_back({v, w});
    d[v]++; // 入度
  }
  for (int i = 1; i <= n; ++i)
    if (d[i] == 0)
      q.push(i);
    else
      c[i] -= U[i]; // 提前减去阈值
  while (!q.empty()) {
    u = q.front();
    q.pop();
    for (auto p : g[u]) {
      if (c[u] > 0) { // 达到阈值
        c[p.first] += p.second * c[u]; // 计算状态
        if (!--d[p.first]) 
          q.push(p.first); // 计算入度
      }
      // if (!--d[p.first]) 
      //   q.push(p.first);
    }
  }
  int fl = 1; // 没有输出 
  for (int i = 1; i <= n; ++i)
    if (g[i].empty())
      if (c[i] > 0) {
        fl = 0;
        cout << i << " " << c[i] << endl;
      }
  if (fl)
    cout << "NULL";
  return 0;
}
提交记录R263150366
hack数据(输入)
TEXT
4 3
0 0
1 0
0 0
0 0
1 3 0
2 3 1
3 4 1
hack数据(输出)
TEXT
4 1
错误输出
TEXT
NULL
注:为什么不使用工单:不是受信任的用户。
meyiwishapig

回复

0 条回复,欢迎继续交流。

正在加载回复...