Stavo provando a risolvere il problema interruttori(terry) ma mi crasha in un determinato punto non so perchè ho provato a usare un compilatore online e mi da lo stesso problema ma al test case successivo
#include <bits/stdc++.h>
using namespace std;
void solve(int t) {
int N, A, B;
cin >> N >> A >> B;
vector<int> Z(A), X(B), Y(B);
for (int i = 0; i < A; i++) {
cin >> Z[i];
}
for (int i = 0; i < B; i++) {
cin >> X[i] >> Y[i];
}
int idx = 42; // memorizza qui l'indice della lampadina
int num = 42; // memorizza qui il numero di interruttori
// aggiungi codice...
vector<vector<int>>lda(N);
for(int i = 0;i<N;i++){
lda[X[i]].push_back(Y[i]); // crash
lda[Y[i]].push_back(X[i]);
}
int max = 0;
queue<int>q;
bool v[N];
int dist[N];
for(int i = 0;i<N;i++)dist[i] = N;
for(int j : Z){
for(int k = 0;k<N;k++)v[k] = false;
q.push(j);
dist[j] = 0;
while(!q.empty()){
int n = q.front();
q.pop();
v[n] = true;
for(int i : lda[n]){
if(!v[i] && (dist[n]+1)<dist[i]){
q.push(i);
dist[i] = dist[n]+1;
}
}
}
}
for(int i = 0;i<N;i++){
if(max<dist[i]){
max = dist[i];
idx = i;
num = max;
}
}
cout << "Case #" << t << ": " << idx << " " << num+1 << "\n";
}
int main() {
// se preferisci leggere e scrivere da file
// ti basta decommentare le seguenti due righe:
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int T;
cin >> T;
for (int t = 1; t <= T; t++) {
solve(t);
}
return 0;
}
4
4 1 4
1
0 1
0 2
1 2
3 2
6 3 7
0
4
1
0 1
3 2
1 3
0 3
3 4
4 5
2 5
5 1 4
4
0 1
1 2
2 3
3 4
2 2 1
0
1
0 1