You are on page 1of 14

963 – bazine

#include<bits/stdc++.h>

using namespace std;

ifstream in("bazine.in");

ofstream out("bazine.out");

int n,m,a[101][101],x,y,nrc,v[101];

inline void dfs(int r,int nrc)

v[r]=nrc;

for(int i=1;i<=n;i++)

if(!v[i] && (a[r][i] || a[i][r]))

dfs(i,nrc);

inline void citire()

{
in>>n>>m;

while(in>>x>>y)

a[x][y]=a[y][x]=1;

for(int i=1;i<=n;i++)

if(!v[i])

dfs(i,++nrc);

out<<nrc;

int main()

citire();

return 0;

}
538 – LungimeMinima

#include <iostream>

#include <fstream>

using namespace std;

ifstream fin("lungimeminima.in");

ofstream fout("lungimeminima.out");

int n , p , L , a[105][105];

int x[105], // coada pentru parcurgerea in latime

v[105], // vector caracteristic care precizeaza daca un varf a fost sau nu vizitat

d[105]; // vectorul de distante

void bfs(int p)

int st, dr;

st = dr = 1;

v[p] = 1;

x[1] = p;

d[p] = 0;

while(st <= dr)

int k = x[st];

for(int i = n; i >= 1 ; --i)

if(v[i] == 0 && a[k][i] == 1)

dr ++;

v[i] = 1;

x[dr] = i;
d[i] = d[k]+1;

st ++;

int main()

int i , j;

fin >> n >> p >> L;

while(fin >> i >> j)

a[i][j] = a[j][i] = 1;

bfs(p);

int cnt = 0;

for(int i = 1 ; i <= n ; ++i)

if(d[i] == L)

cnt ++;

fout << cnt << "\n";

for(int i = 1 ; i <= n ; ++i)

if(d[i] == L)

fout << i << " ";

return 0;

}
484 – LantMinim

#include <iostream>

#include <fstream>

using namespace std;

ifstream fin("lantminim.in");

ofstream fout("lantminim.out");

int n , p , q , a[105][105];

int x[105], // coada pentru parcurgerea in latime

v[105], // vector caracteristic care precizeaza daca un varf a fost sau nu vizitat

t[105], // vectorul de tati

d[105]; // vectorul de tati

void bfs(int p, int q)

int st, dr;

st = dr = 1;

v[p] = 1;

x[1] = p;

t[p] = 0;

d[p] = 1;

while(st <= dr)

int k = x[st];

for(int i = 1; i <= n ; ++i)

if(v[i] == 0 && a[k][i] == 1)

dr ++;
v[i] = 1;

x[dr] = i;

d[i] = d[k]+1;

t[i] = k;

st ++;

void afis_lant(int p)

if(p)

afis_lant(t[p]);

fout << p << " ";

void afis(int *x , int n)

for(int i = 1; i <= n ;++i)

cout << x[i] << " ";

cout << endl;

int main()

int i , j;

fin >> n >> p >> q;


while(fin >> i >> j)

a[i][j] = a[j][i] = 1;

bfs(p,q);

//afis(t,n);

fout << d[q] << endl;;

afis_lant(q);

return 0;

}
126 – Dmax

#include <fstream>

using namespace std;

ifstream fin("dmax.in");

ofstream fout("dmax.out");

int n,a[105][105],v[105],d[105],q[105];

int main(){

int m,st=1,dr=0;

fin >> n >> m;

for( ; m ; --m){

int i, j;

fin >> i >> j;

a[i][j] = a[j][i] = 1;

q[++dr] = 1;

v[1] = 0;

d[1] = 0;

while(st <= dr){

int k = q[st];

for(int i=1;i<=n;++i)

if(v[i]==0 && a[k][i]==1){

q[++dr] = i;

v[i] = 1;

d[i] = d[k] + 1;

++st;
}

int p = 1;

for(int i=1;i<=n; ++i)

if(d[i]>d[p])

p = i;

fout << p << "\n";

return 0;

}
1356 – nsir

#include <fstream>

#include <cmath>

using namespace std;

ifstream f("nsir.in");

ofstream g("nsir.out");

int st[101], n, ex=0;

double eps=0.00001;

void scrie(int k)

ex=1;

for(int i=1;i<=k;i++)

g<<st[i]<<" ";

g<<endl;

int suma1(int k)

int i, s=0;

for(i=1;i<=k;i++)

s+=st[i];

return s;

float suma2(int k)

{
int i;

float s=0;

for(i=1;i<=k;i++)

s+=1./st[i];

return s;

int validare(int k)

if(k==1)return 1;

if(suma1(k)>n || (suma2(k)>1+eps)) return 0;

return 1;

void back(int k)

if(k<=n)

if( (suma1(k-1)==n) && (fabs(1-suma2(k-1))<eps) )

ex=1; scrie(k-1);

else

for(st[k]=st[k-1]; st[k]<=n; st[k]++)

if (validare(k)==1)back(k+1);

}
int main()

f>>n;

back(1);

if(ex==0)g<<0<<endl;

return 0;

}
549 – epidemie

#include <iostream>

#include <fstream>

using namespace std;

ifstream fin("epidemie.in");

ofstream fout("epidemie.out");

int n , a[1005][1005];

int x[1005], // coada pentru parcurgerea in latime

v[1005], // vector caracteristic care precizeaza daca un varf a fost sau nu vizitat

d[1005]; // distantele la varfuri

int st, dr;

int main()

int i , j, m, k , p;

fin >> n >> m;

while( m )

fin >> i >> j;

a[i][j] = a[j][i] = 1;

m --;

fin >> k;

for( ; k ; --k)

fin >> p;

x[++dr] = p;
v[p] = d[p] = 1;

st = 1;

while(st <= dr)

int k = x[st];

for(int i = 1; i <= n ; ++i)

if(v[i] == 0 && a[k][i] == 1)

dr ++;

v[i] = 1;

x[dr] = i;

d[i] = d[k] + 1;

st ++;

int C = 0;

for(int i = 1 ; i <= n ; ++i)

if(d[i] > C)

C = d[i];

fout << C;

return 0;

You might also like