Cod sursa(job #637452)
| Utilizator | Data | 20 noiembrie 2011 14:31:42 | |
|---|---|---|---|
| Problema | Nivele | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.6 kb |
#include<fstream>
#include<vector>
#include<iostream>
using namespace std;
ifstream f("nivele.in");
ofstream g("nivele.out");
long niv[100001],i,n,viz[100001],t[100001];
vector <int> A[100001];
void citeste_graf()
{
int x,y,i;
f>>n;
while(f>>x>>y)
{
A[x].push_back(y);
A[y].push_back(x);
}
f.close();
}
void df(int nod,int nivel)
{
viz[nod]=1;
niv[nod]=nivel;
int nr_vecini,i;
nr_vecini=A[nod].size();
for(i=0;i<nr_vecini;i++)
if (viz[A[nod][i]]==0)
df (A[nod][i],nivel+1);
}
int main()
{
long x,y;
niv[1]=1;
citeste_graf();
df(1,1);
long max=niv[1];
for(i=1;i<=n;i++)
if(niv[i]>max) max=niv[i];
long k;
for(k=1;k<=max;k++)
{g<<"nivel "<<k<<": ";
for(i=1;i<=n;i++)
if(niv[i]==k) g<<i<<" ";
g<<"\n";
}
g.close();
return 0;
}
