アルゴ式(beta版)の「グラフアルゴリズム」グラフとはからの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。
Q1-1. 友達
/* アルゴ式(beta版): C++による「グラフアルゴリズム」グラフとは Q1-1. 友達 https://algo-method.com/tasks/411 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,a,b; cin>>n>>a>>b; vector<string> s(n); for(int i=0;i<n;i++){ cin>>s[i]; } if(s[a].at(b)=='o'){ cout<<"Yes"<<endl; }else{ cout<<"No"<<endl; } return 0; }
Q1-2. フォロー
/* アルゴ式(beta版): C++による「グラフアルゴリズム」グラフとは Q1-2. フォロー https://algo-method.com/tasks/412 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<vector<int>> turtle(n); vector<int> a(m),b(m); for(int i=0;i<m;i++){ cin>>a[i]>>b[i]; turtle[a[i]].push_back(b[i]); } for(int i=0;i<n;i++){ sort(turtle[i].begin(),turtle[i].end()); for(auto j : turtle[i]){ cout<<j<<" "; } cout<<endl; } return 0; }
Q1-3. 人気者の友達
/* アルゴ式(beta版): C++による「グラフアルゴリズム」グラフとは Q1-3. 人気者の友達 https://algo-method.com/tasks/673 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m; cin>>n>>m; vector<vector<int>> g(n); for(int i=0;i<m;i++){ int a,b; cin>>a>>b; g[a].push_back(b); g[b].push_back(a); } int stu=-1,maxnum=-1; for(int i=0;i<n;i++){ int num=(int)g[i].size(); if(maxnum<num){ maxnum=num; stu=i; } } sort(g[stu].begin(),g[stu].end()); for(auto i : g[stu]){ cout<<i<<" "; } cout<<endl; return 0; }
Q1-4. 友達の友達
/* アルゴ式(beta版): C++による「グラフアルゴリズム」グラフとは Q1-4. 友達の友達 https://algo-method.com/tasks/413 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n,m,x; cin>>n>>m>>x; vector<vector<int>> v(n); vector<int> a(m),b(m); for(int i=0;i<m;i++){ cin>>a[i]>>b[i]; v[a[i]].push_back(b[i]); v[b[i]].push_back(a[i]); } set<int> aruruF; for(auto num : v[x]){ aruruF.insert(num); } set<int> aruruFF; for(auto n1 : v[x]){ for(auto n2 : v[n1]){ if(n2!=x && aruruF.count(n2)!=1){ aruruFF.insert(n2); } } } cout<<aruruFF.size()<<endl; return 0; }
設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com