Orar semigroup #2

Orar semigroup #2

Archive for februarie 2012

02/28 - Parcurgeri de tot felul

Se parcurge un graf in adancime si latime plecand dintr-un acelasi nod x. Sa se verifice daca nodurile sunt vizitate in aceeasi ordine.

#include<iostream>
#include<fstream>
using namespace std;
int n,a[100][100],m,viz[100]={0},xx,yy,t[100][100],kk,v[100];
void citire()
{ifstream f("gf");
f>>n>>m;
int x,y;
for(int i=1;i<=m;i++)
{f>>x>>y;
a[x][y]=a[y][x]=1;}
f>>xx>>yy>>kk;
}

void DF(int x)
{cout<<x<<" ";
v[x]=1;
for(int i=1;i<=n;i++)
    if(a[x][i]==1 && v[i]==0)
        DF(i);
}

void BF(int x, int k)
{int c[100],i,p,u,v,ii=1,jj=1;
c[1]=x;
viz[x]=1;
p=u=1;
while(p<=u)
{v=c[p];p++;jj=1;
for(i=1;i<=n;i++)
    if(a[v][i]==1 && viz[i]==0)
    {t[ii][jj]=i;
    jj++;
        u++;
       
    c[u]=i;
    viz[i]=1;}
    if(t[ii][jj-1]!=0)
    ii++;
}
for(i=1;i<=u;i++)
    cout<<c[i]<<" ";
//cout<<endl;
}

int main()
{
    citire();
cout<<"Parcurgere in adancime"<<endl;
DF(1);
cout<<endl<<"Parcurgere in latime"<<endl;
BF(1,0);
}

duminică, 26 februarie 2012 by DlMuresan
Categories: , , | Leave a comment

02/24 - Probleme grafuri orientate

2. Se citesc din fisierul graf.in n (nr noduri), m (nr. arce) si arcele unui graf orientat.
A) Sa se construiasca matricea varfuri-arce
B) Sa se afiseze listele de vecini
C) Sa se afiseze gradul exterior si interior al fiecarui nod.
D) Pornind de la matricea varfuri-arce sa se construiasca matricea de adiacente.

#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int b[10][10],a[10][10];
int main()
{ifstream f("date");
int x,y,n,m,i,j,k,p,ii,d1,d2,u1,u2;
f>>n>>m;
for(j=1;j<=m;j++)
{f>>x>>y;
b[x][j]=1;
b[y][j]=-1;}
cout<<"Matricea varfuri-arce"<<endl;
for(i=1;i<=n;i++)
    {for(j=1;j<=m;j++)
        cout<<setw(3)<<b[i][j];
    cout<<endl;
    }
    cout<<endl<<"Extremitati initiale"<<endl;
for(i=1;i<=n;i++)
{    cout<<"Nodul "<<i<<": ";
    for(j=1;j<=m;j++)
        {
        if(b[i][j]==1)
            for(ii=1;ii<=n;ii++)
                if(b[ii][j]==-1)
                    cout<<ii<<" ";
    }
        cout<<endl;}
cout<<endl;
cout<<"Extremitati finale"<<endl;
for(i=1;i<=n;i++)
{    cout<<"Nodul "<<i<<": ";
    for(j=1;j<=m;j++)
        {
        if(b[i][j]==-1)
            for(ii=1;ii<=n;ii++)
                if(b[ii][j]==1)
                    cout<<ii<<" ";
        }
        cout<<endl;}
cout<<endl;
cout<<"Gradele varfurilor"<<endl;
for(i=1;i<=n;i++)
{d1=d2=0;
    for(j=1;j<=m;j++)
        if(b[i][j]==1)
            d1++;
        else if(b[i][j]==-1)
            d2++;
    cout<<"d+("<<i<<")="<<d1;
    cout<<"  ";
    cout<<"d-("<<i<<")="<<d2;
    cout<<endl;
}
cout<<endl;
cout<<"Matricea de adiacente"<<endl;
for(j=1;j<=m;j++)
{//u1=u2=0;
    for(i=1;i<=n;i++)
        {if(b[i][j]==1)
            u1=i;
        if(b[i][j]==-1)
            u2=i;}
        a[u1][u2]=1;
        }
   
for(i=1;i<=n;i++)
{    for(j=1;j<=n;j++)
        cout<<setw(3)<<a[i][j];
    cout<<endl;}
       
}

joi, 23 februarie 2012 by DlMuresan
Categories: , | Leave a comment

02/22 - Grafuri orientate

Se citeste un graf orientat. Sa se afiseze nodul interior si exterior al fiecarui nod. Sa se afiseze predecesorii si succesorii fiecarui nod. Sa se afiseze nodurile izolate. Sa se afiseze arcele incidente cu un nod dat.

#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{ifstream f("date");
int n,m,i,j,s2,s1,x,y,a[10][10]={0},ok;
f>>n>>m;
for(i=1;i<=m;i++)
    {f>>x>>y;
    a[x][y]=1;}
for(i=1;i<=n;i++)
{s1=0;s2=0;
    for(j=1;j<=n;j++)
        {s1+=a[i][j];
        s2+=a[j][i];}
    cout<<"Nodul "<<i<<" are gradul exterior "<<s1<<endl;
    cout<<"Nodul "<<i<<" are gradul interior "<<s2<<endl;
    cout<<endl;
}
for(i=1;i<=n;i++)
    {cout<<"Succesorii lui "<<i<<": ";
        for(j=1;j<=n;j++)
            if(a[i][j]==1)
                cout<<j<<" ";
            cout<<endl;
    }
    cout<<endl;
for(i=1;i<=n;i++)
    {cout<<"Predecesorii lui "<<i<<": ";
        for(j=1;j<=n;j++)
            if(a[j][i]==1)
                cout<<j<<" ";
            cout<<endl;
    }
cout<<"Noduri izolate: ";
for(i=1;i<=n;i++)
{ok=1;
for(j=1;j<=n;j++)
    if(a[i][j]!=0 || a[j][i]!=0)
        ok=0;
if(ok==1)
    cout<<i<<" ";
}
cout<<endl<<endl;
for(i=1;i<=n;i++)
{cout<<"Arce incidente cu "<<i<<": ";
for(j=1;j<=n;j++)
{    if(a[i][j]==1)
        cout<<i<<" "<<j<<"   ";
    if(a[j][i]==1)
        cout<<j<<" "<<i<<"   ";}
    cout<<endl;
}

}

marți, 21 februarie 2012 by DlMuresan
Categories: , | Leave a comment

02/20 - Grile BAC-uite

72.

#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,k,p;
ifstream f("date");
f>>n;
k=1;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        if(i+j<=n+1)
            {a[i][j]=k;
            k++;}
k=1;
for(j=n;j>0;j--)
    for(i=n;i>0;i--)
        if(i+j>=n+1)
        {a[i][j]=k;
        k++;}
for(i=1;i<=n;i++)
{    for(j=1;j<=n;j++)
        cout<<setw(3)<<a[i][j];
cout<<endl;
}
}
74.
 #include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,k,p,v[100];
v[0]=0;
v[1]=1;
ifstream f("date");
f>>n;
k=1;
for(i=2;i<=n*n;i++)
    v[i]=v[i-1]+v[i-2];
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        {a[i][j]=v[k]%10;
        k++;}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
    cout<<setw(3)<<a[i][j];
cout<<endl;}
}
75.
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,k,p,v[100];
v[0]=0;
v[1]=1;
ifstream f("date");
f>>n;
k=1;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        {a[i][j]=(i+j)*(i+j);}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
    cout<<setw(3)<<a[i][j];
cout<<endl<<endl<<endl;}
}
81.
 #include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,k,p,v[100],m,s=0;
v[0]=0;
v[1]=1;
ifstream f("date");
cin>>n>>m>>k;
for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        f>>a[i][j];
for(j=1;j<=m;j++)
    for(i=1;i<=n;i++)
        if(a[i][j]==k)
            {s=s+j;break;}
cout<<s;
}
82.
 #include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,k,p,v[100],m,s=1;
v[0]=0;
v[1]=1;
ifstream f("date");
cin>>n>>m>>k;
for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        f>>a[i][j];
for(j=1;j<=m;j++)
    for(i=1;i<=n;i++)
        if(a[i][j]==k)
            {s=s*j;break;}
cout<<s;
}
86.
 #include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,k,p,v[100];
ifstream f("date");
f>>n;
k=1;
for(i=1;i<=2*n;i+=2)
    for(j=1;j<=2*n;j++)
        {a[i][j]=k;
        k+=2;}
        k=2;
for(i=2;i<=2*n;i+=2)
    for(j=2*n;j>0;j--)
        {a[i][j]=k;k+=2;}
for(i=1;i<=2*n;i++)
{for(j=1;j<=2*n;j++)
    cout<<setw(3)<<a[i][j];
cout<<endl;}
}
87.
 #include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,p,v[100],k;
float s=0;
ifstream f("date");
f>>n;
k=0;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    f>>a[i][j];
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        if(i>j && a[i][j]>0)
            {s=s+a[i][j];
            k++;}
cout<<(float)s/k;
/*for(i=1;i<=2*n;i++)
{for(j=1;j<=2*n;j++)
    cout<<setw(3)<<a[i][j];
cout<<endl;}*/
}
88.
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,p,v[100],k;
float s=0;
ifstream f("date");
f>>n;
k=0;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    f>>a[i][j];
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        if(i<j && a[i][j]>0)
            {s=s+a[i][j];
            k++;}
cout<<(float)s/k;
/*for(i=1;i<=2*n;i++)
{for(j=1;j<=2*n;j++)
    cout<<setw(3)<<a[i][j];
cout<<endl;}*/
}
89.
 #include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,p,v[100],k;
v[0]=0;
v[1]=1;
ifstream f("date");
f>>n;
k=0;
for(i=2;i<=n*n;i++)
    v[i]=v[i-1]+v[i-2];
for(i=1;i<=n;i++)
    if(i%2==1)
    for(j=1;j<=n;j++)
        {a[i][j]=v[k];k++;}
    else for(j=n;j>0;j--)
    {a[i][j]=v[k];k++;}

for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
    cout<<setw(5)<<a[i][j];
cout<<endl;}
}
90.
 #include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,p,v[100],s1=0,s2=0,k;
ifstream f("date");
f>>n;
float m1,m2,k1,k2;
m1=m2=k1=k2=0;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        {if(i<j && a[i][j]>0)
            {k1++;
            s1+=a[i][j];}
        else if(i>j && a[i][j]>0)
            {k2++;
            s2+=a[i][j];}
        }
m1=(double)s1/k1;
m2=(double)s2/k2;
cout<<m1-m2;
/*for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
    cout<<setw(5)<<a[i][j];
cout<<endl;}*/
}
92.
 #include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int n,a[100][100],i,j,p,v[100],s1=0,s2=0,k,mini=INT_MAX,ii,jj,m;
ifstream f("date");
f>>m>>n;
for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];
for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
        if(a[i][j]<mini)
            mini=a[i][j];
for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
        if(a[i][j]==mini)
        {ii=1;jj=j;}
for(i=ii;i<=m;i++)
    for(j=1;j<=n;j++)
        a[i][j]=a[i+1][j];
m--;
for(i=1;i<=m;i++)
    for(j=jj;j<=n;j++)
        a[i][j]=a[i][j+1];
n--;
for(i=1;i<=m;i++)
{for(j=1;j<=n;j++)
    cout<<setw(5)<<a[i][j];
cout<<endl;}
}

duminică, 19 februarie 2012 by DlMuresan
Categories: | Leave a comment

02/16

61

#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int a[100][100],i,j,n;
cin>>n;
for(i=1;i<=n;i++)
    a[n][i]=i;
for(i=n-1;i>=1;i--)
    for(j=1;j<=n;j++)
        if(i<j)
            a[i][j]=0;
        else a[i][j]=a[i+1][j-1]+a[i+1][j]+a[i+1][j+1];
for(i=1;i<=n;i++)
{    for(j=1;j<=n;j++)
        cout<<setw(3)<<a[i][j];
    cout<<endl;}
}
63
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int a[100][100],i,j,n,m,k=1;
cin>>n>>m;
for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
        {a[j][i]=k;k++;}
for(i=1;i<=n;i++)
{    for(j=1;j<=m;j++)
        cout<<setw(3)<<a[i][j];
    cout<<endl;}
}
65
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{int a[100][100],i,j,n,m,k=1;
cin>>n>>m;
for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        {a[i][j]=k;k++;}
for(i=1;i<=n;i++)
{    for(j=1;j<=m;j++)
        cout<<setw(3)<<a[i][j];
    cout<<endl;}
}
68
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{int a[100][100],i,j,p=1,n,m;
ifstream f("date");
f>>n>>m;
for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        f>>a[i][j];
for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        if(i%2==0 && j%2==1)
        {p=p*a[i][j];
        cout<<p<<" ";}
cout<<endl<<p;
}
Fisier
4 4
11 -21 31 41
5 -61 71 -81
91 11 21 31
-11 31 -41 0
70
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{int a[100][100],i,j,p=1,n,m,x;
ifstream f("date");
f>>m>>n>>x;
for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];
for(i=x;i<=m;i++)
    for(j=1;j<=n;j++)
        a[i][j]=a[i+1][j];
for(i=1;i<m;i++)
{  
        for(j=1;j<=n;j++)
            cout<<setw(3)<<a[i][j];
        cout<<endl;}
}
Fisier
3 4 2
11 21 31 41
51 61 71 81
91 11 21 31

joi, 16 februarie 2012 by DlMuresan
Categories: , | Leave a comment

BAC - Subiectul II

V25.

#include<fstream>
#include<iostream>
using namespace std;
int main()
{ifstream f("date");
int m,n,i,j,k,p,a[100][100];
f>>m>>n;
for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];
for(j=1;j<=n;j++)
    {p=1;
for(i=1;i<=m;i++)
    p=p*a[i][j];
a[m+1][j]=p;
    }
for(i=1;i<=n;i++)
    cout<<a[m+1][i]<<" ";
}
V26.
 #include<fstream>
#include<iostream>
using namespace std;
int main()
{ifstream f("date");
int m,n,i,j,k,p,a[100][100];
f>>m>>n;
for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];
for(j=1;j<=n;j++)
    {p=1;
for(i=1;i<=m;i++)
    p=p*a[i][j];
a[m+1][j]=p;
    }
for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
        if(a[i][j]*a[i][j]==a[m+1][j])
            cout<<a[i][j]<<" ";
//for(i=1;i<=n;i++)
    //cout<<a[m+1][i]<<" ";
}
V27.
 #include<fstream>
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{ifstream f("date");
int m,n,i,j,k,p,a[100][100];
f>>n;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        if(i==1 || j==1 || j==n)
            a[i][j]=1;
        else a[i][j]=a[i-1][j-1]+a[i-1][j]+a[i-1][j+1];
for(i=1;i<=n;i++){
    for(j=1;j<=n;j++)
        cout<<setw(3)<<a[i][j];
    cout<<endl;}
}
V28.
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{char v[10]={"aeiou"},a[100],b[100];
cin>>a;
cout<<endl;
int i,j,ok;
strcpy(b,a);
for(i=0;i<5;i++)
{   strcpy(b,a);
ok=0;
for(j=0;j<strlen(a);j++)
    if(b[j]==v[i])
    {    ok=1;strcpy(b+j,b+j+1);}
    if(ok)
        cout<<b<<endl;
}
}
V29.
#include<iostream>
#include<fstream>
using namespace std;
int main()
{int m,n,a[100][100],i,j,pp=1;
double p;
int ok;
ifstream f("date");
f>>n;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];
for(i=2;i<=n;i++)
{p=(double)a[1][i]/a[1][1];
ok=1;
for(j=2;j<=n;j++)
    if(a[j][i]/a[j][1]!=p)
        ok=0;
    if(ok==1)
        pp=pp*p;
}
cout<<pp;
}
Fisier
5
2 7 4 8 4
1 1 2 4 2
3 12 6 12 3
1 22 2 4 2
5 10 10 20 8
V30.
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{int m,n,a[100][100],i,j,pp=1;
double p;
int ok;
ifstream f("date");
f>>n;
for(i=1;i<=n;i++)
    {a[1][i]=1;
a[i][1]=1;}
for(i=2;i<=n;i++)
    for(j=2;j<=n;j++)
        a[i][j]=a[i][j-1]+a[i-1][j];
for(i=1;i<=n;i++)
    {for(j=1;j<=n;j++)
        cout<<setw(3)<<a[i][j];
    cout<<endl;}
}
V32.
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{char a[100],c1,c2;
int i;
cin.getline(a,100);
cin>>c1>>c2;
for(i=0;i<strlen(a);)
    if(a[i]==c1)
        {a[i]=c2;i++;}
    else if(a[i]==c2)
        {a[i]=c1;i++;}
        else i++;


cout<<a;
}
V34.
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{int a[100][100],i,j,n,k=1,v[100],ii=1;
ifstream f("date");
f>>n;
for(i=1;i<=INT_MAX;i++)
    {if(i*i%2==0 && i*i%3!=0)
        {v[k]=i;k++;}
        if(k>n*n)
            break;}
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        {a[i][j]=v[ii];
    ii++;}
       
for(i=1;i<=n;i++)
    {for(j=1;j<=n;j++)
        cout<<setw(3)<<a[i][j];
    cout<<endl;}
}
V35.
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{int a[100][100],i,mini,n,j;
ifstream f("date");
f>>n;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];
for(j=1;j<=n;j++)
{mini=5000;
    for(i=1;i<=n;i++)
        if(a[i][j]<mini)
            mini=a[i][j];
cout<<mini<<" ";
}
}
V37.
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{char a[100];
int i;
cin.get(a,100);
if(isalpha(a[0]))
    a[0]=a[0]-32;
if(isalpha(a[strlen(a)-1]))
    a[strlen(a)-1]=a[strlen(a)-1]-32;
for(i=1;i<strlen(a);i++)
    {if(isalpha(a[i]) && a[i-1]==' ')
        a[i]=a[i]-32;
    if(isalpha(a[i]) && a[i+1]==' ')
        a[i]=a[i]-32;
    }
cout<<a;
}
V38.
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{int a[100][100],i,mini,n,j,p=1;
ifstream f("date");
f>>n;
for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        f>>a[i][j];
for(j=1;j<=n;j++)
{mini=5000;
    for(i=1;i<=n;i++)
        if(a[i][j]<mini)
            mini=a[i][j];
        if(a[n-j+1][j]==mini)
            p=p*mini;
}
cout<<p;
}
Fisier
4
3 4 9 10
25 2 7 9
18 3 10 4
3 7 20 3
V44.
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
int main()
{int a[100][100],i,j,n;
cin>>n;
int k=1;

for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        if(i+j<=n+1)
            a[i][j]=1;
        else a[i][j]=i+j-n;

for(i=1;i<=n;i++)
{
    for(j=1;j<=n;j++)
        cout<<setw(3)<<a[i][j];
    cout<<endl;}
}

marți, 14 februarie 2012 by DlMuresan
Categories: , | Leave a comment

02/11 - Parcurgere in latime

1. Folosind algoritmul de parcurgere in latime a unui graf, (BF) sa se realizeze urmatoarele cerinte:
a) sa se verifice daca un graf e conex
b) sa se verifice daca se poate ajunge de la nodul x la nodul y
c) sa se afiseze componenetele conexe ale grafului
d) pornind cu parcurgerea din nodul x, sa se afiseze nivelul fiecarui nod in arborele obtinut 

#include<iostream>
#include<fstream>
using namespace std;
int n,a[100][100],m,viz[100]={0},xx,yy,t[100][100],kk;
void citire()
{ifstream f("gf");
f>>n>>m;
int x,y;
for(int i=1;i<=m;i++)
{f>>x>>y;
a[x][y]=a[y][x]=1;}
f>>xx>>yy>>kk;
}

void BF(int x, int k)
{int c[100],i,p,u,v,ii=1,jj=1;
c[1]=x;
viz[x]=1;
p=u=1;
while(p<=u)
{v=c[p];p++;jj=1;
for(i=1;i<=n;i++)
    if(a[v][i]==1 && viz[i]==0)
    {t[ii][jj]=i;
    jj++;
        u++;// afisare nod pentru determinarea  ordinii de parcurgere
    c[u]=i;
    viz[i]=1;}
    if(t[ii][jj-1]!=0)
    ii++;
}
for(i=1;i<=u;i++)
    cout<<c[i]<<" ";
//cout<<endl;
}


int main()
{citire();
int k=0,i;
for(i=1;i<=n;i++)
    if(!viz[i])
    {k++;
    BF(i,k);cout<<endl;
    }
if(k!=1)
    cout<<endl<<"Graful nu e conex"<<endl;
else cout<<endl<<"Graful e conex"<<endl;
cout<<k<<" componente conexe"<<endl;
for(i=1;i<=n;i++)
    viz[i]=0;
cout<<endl;
cout<<"Parcurgerea din "<<xx<<endl;
BF(xx,0);
cout<<endl;
if(viz[yy]!=0)
    cout<<"Se poate ajunge din "<<xx<<" in "<<yy<<endl;
else cout<<"Nu se poate ajunge din "<<xx<<" in "<<yy<<endl;
for(i=1;i<=n;i++)
    viz[i]=0;
cout<<endl;
cout<<"Componentele conexe"<<endl;
for(i=1;i<=n;i++)
    if(viz[i]==0)
        {BF(i,0);cout<<endl;}
    cout<<endl;cout<<endl;
cout<<"Parcurgere in latime din nodul ";
BF(1,0);
cout<<endl;
t[0][1]=1;
for(i=0;i<=n;i++)
    {if(t[i][1]!=0)
        cout<<"Nivelul "<<i<<": ";
for(int j=1;j<=n;j++)
    if(t[i][j]!=0)
    cout<<t[i][j]<<" ";
    cout<<endl;}
 
}
Fisier
7 7
2 7
1 2
1 5
2 6
3 4
4 7
5 6
1 7
1

joi, 9 februarie 2012 by DlMuresan
Categories: , | Leave a comment

02/06 - Tentativă de program Vishispaces

Se dă un graf şi se cere, probabil, afişarea muchiilor de avansare, respectiv de întoarcere în urma parcurgerii grafului în adâncime. http://clasa11info.wikispaces.com/Ce_facem_azi

#include<iostream>
#include<fstream>
using namespace std;
int n,a[20][20],m,viz[30],k=1,b[100];
void df(int x)
{int i;
for(i=1;i<=n;i++)
if(viz[i]==0 && a[x][i]==1)
{viz[i]=1;
b[k]=i;
b[k+1]=x;
k=k+2;
//cout<<x<<" "<<i<<endl;
df(i);}
}
void citire()
{int i,j,x,y;
ifstream f("date");
f>>n>>m;
for(i=1;i<=m;i++)
{ f>>x>>y;
a[x][y]=a[y][x]=1;
}}
int este(int x, int y)
{int i;
for(i=1;i<k;i=i+2)
if(b[i]==x && b[i+1]==y || b[i+1]==x && b[i]==y)
return 0;
return 1;}
int main()
{int i,j;
citire();
viz[1]=1;
df(1);
for(i=1;i<k;i=i+2)
cout<<b[i]<<" "<<b[i+1]<<endl;
cout<<"muchii de intoarcere"<<endl;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]==1)
if(este(i,j))
cout<<i<<" "<<j<<endl;
}
Fişier
5 4
1 2
1 3
2 4
1 5

luni, 6 februarie 2012 by DlMuresan
Categories: , | Leave a comment