#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105, MAXM = 10005;
int n, p, in[MAXN], C[MAXN], T[MAXN], out[MAXN];
bool flag;
queue<int> q;
struct Edge
{
int v, w;
};
vector<Edge> e[MAXN];
void tp() {
for (int i = 1; i <= n; i++) if (in[i] == 0) q.push(i);
while (q.size()) {
int p = q.front();
for (int i = 0; i < e[p].size(); i++) {
int to = e[p][i].v, w = e[p][i].w;
C[to] += w * C[p];
if (--in[to] == 0) {
C[to] -= T[to];
q.push(to);
}
}
q.pop();
}
}
int main()
{
cin >> n >> p;
for (int i = 1; i <= n; i++)
{
cin >> C[i] >> T[i];
}
int i, j, w;
for (int i = 1; i <= p; i++) {
cin >> i >> j >> w;
e[i].push_back((Edge){j, w});
in[j]++; out[i]++;
cout << i << "\n";
}
tp();
for (int i = 1; i <= n; i++) {
if (!out[i] && C[i] > 0) {
flag = 1;
cout << i << " " << C[i] << "\n";
}
}
if (!flag) cout << "NULL";
return 0;
}
输入:
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
为什么没有输入完