AtCoder Beginner Contestの過去問から、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
「競技プログラミング」を略して、「競プロ」などと呼ばれています。
#D - Transit Tree Path
僕が作成、提出したコードは、以下のとおりです。
/* AtCoder Problems in C++ #D - Transit Tree Path https://atcoder.jp/contests/abc070/tasks/abc070_d 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; const ll num=100007; int main(void){ ll n; cin>>n; vector<pair<ll,ll>> vp[num]; for(ll i=0;i<n-1;i++){ ll a,b,c; cin>>a>>b>>c; vp[a].push_back({b,c}); vp[b].push_back({a,c}); } ll q,k; cin>>q>>k; vector<ll> v(num); v[k]=0; queue<ll> que; que.push(k); while(!que.empty()){ ll x=que.front(); que.pop(); for(ll i=0;i<vp[x].size();i++){ ll y=vp[x][i].first; if(v[y]==0){ v[y]=v[x]+vp[x][i].second; que.push(y); } } } while(q--){ ll X,Y; cin>>X>>Y; cout<<v[X]+v[Y]<<endl; } return 0; }
AtCoder Beginner Contestは、オンラインジャッジによるプログラミングコンテストです。
日本語と英語に対応していて、週末ごとに実施されているみたいです。
https://practice.contest.atcoder.jp/tutorial
アカウントを登録すれば、誰でも参加できます。