すぬさんの競プロノート (2)
ABC061 Counting Roads
街の数とそこからどの街へ道が伸びているかの一覧が与えられ、それぞれの街から伸びている数を数え上げる問題。
隣接リストをつくり、それぞれのリストの長さを求めるだけで解ける。
void solve(long long N, long long M, std::vector<long long> a, std::vector<long long> b){
vector <vector <LL> >adj;
REP(i, N+1){
vector<long long> l;
adj.PB(l);
}
REP(i, M){
adj[a[i]].PB(b[i]);
adj[b[i]].PB(a[i]);
}
REP(i, N){
cout<<adj[i+1].size()<<endl;
}
}
隣接リストは思いついたらすぐに作れるように、テンプレートに入れておいてもいいかもしれない。