1) Sa se verifice daca doua noduri x si y fac parte din aceeasi componenta tare conexa. In caz afirmativ, sa se afiseze toate nodurile componentei conexe.
#include<iostream>Fisier
#include<fstream>
#include<iomanip>
using namespace std;
int n,m,a[100][100];
int viz[100];
int main()
{ifstream f("date");
int i,j,x,k,y,nr=0;
f>>n>>m;
for(i=1;i<=m;i++)
{f>>x>>y;
a[x][y]=1;}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][k] && a[k][j])
a[i][j]=1;
for(i=1;i<=n;i++)
if(viz[i]==0)
{nr++;
viz[i]=nr;
for(j=1;j<=n;j++)
if(a[i][j] && a[j][i])
viz[j]=nr;
}
cout<<nr<<" componente tare conexe"<<endl;
for(i=1;i<=nr;i++)
{ for(j=1;j<=n;j++)
if(viz[j]==i)
cout<<j<<" ";
cout<<endl;}
int aa,bb;
int ok=0;
cout<<"Cititi nodurile de testat"<<endl;
cin>>aa>>bb;
if(viz[aa]==viz[bb])
{cout<<"da"<<endl;
ok=1;}
else cout<<"nu";
if(ok)
for(i=1;i<=n;i++)
if(viz[i]==viz[aa])
cout<<i<<" ";
}
9 132) Sa se afiseze toate nodurile in care nu intra niciun arc, dar din care ies cel putin t arce.
1 2
2 6
8 2
6 7
7 8
6 8
8 6
3 4
4 5
5 3
5 9
9 8
9 4
#include<iostream>Fisier
#include<fstream>
#include<iomanip>
using namespace std;
int n,m,a[100][100];
int viz[100];
int main()
{ifstream f("date");
int i,j,x,k,y,nr=0,s,t;
f>>n>>m;
for(i=1;i<=m;i++)
{f>>x>>y;
a[x][y]=1;}
cout<<"Cititi t ";
cin>>t;
for(i=1;i<=n;i++)
{s=0;
for(j=1;j<=n;j++)
s=s+a[i][j];
a[i][n+1]=s;
}
for(j=1;j<=n;j++)
{s=0;
for(i=1;i<=n;i++)
s=s+a[i][j];
a[n+1][j]=s;
}
for(i=1;i<=n+1;i++){
for(j=1;j<=n+1;j++)
if(i!=n+1 || j!=n+1)
cout<<setw(3)<<a[i][j];
cout<<endl;}
for(i=1;i<=n;i++)
if(a[n+1][i]==0 && a[i][n+1]>=t)
cout<<i<<" ";
}
9 143) Sa se afiseze toate lanturile elementare de lungime 4.
1 2
1 3
2 6
8 2
6 7
7 8
6 8
8 6
3 4
4 5
5 3
5 9
9 8
9 4
#include<iostream>Fisier
#include<fstream>
#include<iomanip>
using namespace std;
int n,m,a[100][100],x[100];
void afisare(int i)
{int j;
for(j=1;j<=i;j++)
cout<<x[j]<<" ";
cout<<endl;}
int verif(int i)
{int j;
for(j=1;j<i;j++)
if(x[i]==x[j])
return 0;
if(a[x[i]][x[i-1]]==0 && a[x[i-1]][x[i]]==0)
return 0;
return 1;
}
void back(int i)
{
for(int j=1;j<=n;j++)
{x[i]=j;
if(verif(i))
if(i==5)
afisare(i);
else back(i+1);
}
}
int main()
{ifstream f("date");
int xx,i,j,k,yy;
f>>n>>m;
for(i=1;i<=m;i++)
{f>>xx>>yy;
a[xx][yy]=1;}
for(i=1;i<=n;i++)
{x[1]=i;
back(2);
}
}
9 13
1 2
2 6
8 2
6 7
7 8
6 8
8 6
3 4
4 5
5 3
5 9
9 8
9 4