見出し画像

すぬさんの競プロノート (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;
   }
}

隣接リストは思いついたらすぐに作れるように、テンプレートに入れておいてもいいかもしれない。

この記事が気に入ったらサポートをしてみませんか?