Pagini recente » Cod sursa (job #467304) | Cod sursa (job #1632957) | Cod sursa (job #459572) | Cod sursa (job #1506131) | Cod sursa (job #2424608)
#include <bits/stdc++.h>
using namespace std;
void addEdge(vector <int> adj[], int u, int v){
adj[u].push_back(v);
adj[v].push_back(u);
}
void showList(vector <int> adj[], int dim){
for(int i = 1; i <= dim; i++){
cout << i << ": ";
for(auto it: adj[i]){
cout << it << " ";
}
cout << endl;
}
}
map <int, bool> VIZ;
void DFS(vector <int> adj[], int start, int &nod){
//cout << start << " ";
VIZ[start] = true;
nod = start;
for(auto it: adj[start])
if(!VIZ[it])
DFS(adj, it, nod);
}
queue <int> Q;
vector <int> PARENT(1000);
void BFS(vector <int> adj[], int start, int &nod, int &nr){
PARENT[start] = start;
while(!Q.empty()){
int cr = Q.front();
cout << cr << " ";
nod = cr;
nr += 1;
Q.pop();
for(auto it: adj[cr])
if(!VIZ[it]){
Q.push(it);
PARENT[it] = cr;
VIZ[cr] = true;
}
}
}
int main()
{
ifstream fin("darb.in");
int noduri;
fin >> noduri;
vector <int> adj[noduri + 1];
for(int i = 1; i <= noduri - 1; i++){
int x, y;
fin >> x >> y;
addEdge(adj, x, y);
}
//showList(adj, noduri);
int nod = 0;
for(int i = 1; i <= noduri; i ++)
PARENT[i] = 0;
for(int i = 1; i <= noduri; i++)
VIZ[i] = false;
int start = 1;
Q.push(start);
VIZ[start] = true;
int nr = 0;
BFS(adj, start, nod, nr);
cout << " \nAm ajuns in nodul " << nod << " \n";
//-----------------------------------Prima parcurgere-----------------
for(int i = 1; i <= noduri; i ++)
PARENT[i] = 0;
for(int i = 1; i <= noduri; i++)
VIZ[i] = false;
while (!Q.empty()){
Q.pop();
}
Q.push(nod);
VIZ[nod] = true;
cout << endl;
nr = 0;
BFS(adj, nod, noduri, nr);
cout << endl;
cout << "Nod: " << nod << "Noduri: " << noduri;
nr = 1;
while(nod != noduri){
nr += 1;
noduri = PARENT[noduri];
}
ofstream fout("darb.out");
fout << nr;
cout << endl << "Pasi: " << nr << endl;
return 0;
}