こんにちは! mnbd(@mnbbbbbd)です。
AtCoder Beginner ContestのCounting Roadsの問題文が理解できなくて、
回答もわからないんだけど…
相談者
問題文のご説明と私の回答をお伝えいたします。
本記事では、以下のことを知ることができます。
- AtCoder Beginner Contest B061 Counting Roadsの問題文の理解の助け
- C++を用いた私の回答
AtCoder Beginner Contest B061 Counting Roads
問題文
N 個の都市があり、M 本の道路があります。
https://atcoder.jp/contests/abc061/tasks/abc061_b
i(1≦i≦M)i(1≦i≦M) 番目の道路は、都市 ai と 都市 bi (1≦ai,bi≦N)(1≦ai,bi≦N) を双方向に結んでいます。
同じ 2 つの都市を結ぶ道路は、1 本とは限りません。
各都市から他の都市に向けて、何本の道路が伸びているか求めてください。
解説
管理人
アルファベットが出てくるとわかりずらいですよね……。
入力例と出力例を見ると理解できることがあります。
入力例
4 3
1 2
2 3
1 4
- 1行目 都市の数4 道路の数3
- 2行目からは、道路がどの都市とどの都市をつないでいるかを表します
- 2行目 都市番号1 都市番号2
- 3行目 都市番号2 都市番号3
- 4行目 都市番号1 都市番号4
出力例
2
2
1
1
各行は、都市番号で、いくつ道路があるかを表しています。
私の回答
#include <bits/stdc++.h>
using namespace std;
int main() {
int N, M;
cin >> N >> M;
vector<int> count(N);
for (int i = 0; i < M; i++) {
int a, b;
cin >> a >> b;
count.at(a - 1)++;
count.at(b - 1)++;
}
for (int i = 0; i < N; i++) {
cout << count.at(i) << endl;
}
}
学んだこと
C++入門 AtCoder Programming Guide for beginners (APG4b)から始めた場合、この問題に行くつくということは、配列を学んだばかりの状態です。
私の場合、この練習問題に関しては、配列の操作よりも問題文の理解ができませんでした。
これは、プログラミング以前の国語力、読解力の問題ということを痛感しています。
まとめ
AtCoder Beginner Contest 061 B – Counting Roadsについてご説明させていただきました。
プログラミングの勉強を始めたばかりですが、よかったTwitterでつながってください!
@mnbbbbbd
以上です。
読んでいただきありがとうございました!