輸入頂點數 n、邊數 m,再輸入 m 條邊 (u, v),輸出出度為 0 的頂點個數。
#include <iostream>
#include <cstring>
using namespace std;
#define MAXN 105
int n, m, Edge[MAXN][MAXN];
int main() {
while (cin >> n >> m, n || m) {
memset(Edge, 0, sizeof(Edge));
for (int i = 0; i < m; i++) {
int u, v; cin >> u >> v;
Edge[u-1][v-1] = 1; // 有向邊
}
int cnt = 0;
for (int i = 0; i < n; i++) {
int outDeg = 0;
for (int j = 0; j < n; j++) outDeg += Edge[i][j];
if (outDeg == 0) cnt++;
}
cout << cnt << endl;
}
return 0;
}
測試輸入以 0 0 結束。核心:出度 = 行和。