[C++]旅行計画
1.質問
韓牛が暮らす国にはNの観光地があり、各観光地は1-N番の番号で区切られている.また、任意の2つの観光地の間に2つの観光地を結ぶ道路が存在する可能性がある.これは、観光地が道路につながっていれば、双方向に移動できることを意味します.旅行計画を立てた後、韓宇はこの旅行計画が実行できるかどうかを判断しようとした.例えば、N=5は、以下の道路情報が提供されていると仮定する.
2.入力
(1 ≤ N, M ≤ 500)
3.出力
1行目の時に出来ればYES出力出来ればNO出力
4.解答
=(같은 부모를 가지는지)
配列を入力して相互に接続すると、N X N
演算が行われる.5.最初のコードで修正された点
6.ソース
#include <iostream>
#include <vector>
using namespace std;
int n, m;
int parent[501];
int findParent(int x) {
if(parent[x] == x) return x;
else return findParent(parent[x]);
}
void unionParent(int a, int b) {
a = findParent(a);
b = findParent(b);
if(a < b) parent[b] = a;
else parent[a] = b;
}
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin>>n>>m;
for (int i = 0; i < n; i++) {
parent[i] = i;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int x;
cin>>x;
if (x==1) {
unionParent(i+1, j+1);
}
}
}
vector<int> plan;
for (int i = 0; i < m; i++) {
int x;
cin>>x;
plan.push_back(x);
}
bool answer = true;
for (int i = 0; i < m-1; i++) {
if (findParent(i) != findParent(i+1)) {
answer = false;
break;
}
}
if (answer) cout<<"YES";
else cout<<"NO";
}
Reference
この問題について([C++]旅行計画), 我々は、より多くの情報をここで見つけました https://velog.io/@e7838752/tripPalnテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol