Cerința
Se dă un graf orientat cu n
vârfuri și m
arce prin lista arcelor și un număr natural k
. Afișați numărul de vârfuri ale componentei tare conexe în care se află vârful k
.
Date de intrare
Programul citește de la tastatură numărul n
de noduri și numărul m
de arce și numărul k
, iar apoi lista arcelor, formată din m
perechi de forma i j
, cu semnificația că există arc orientat de la nodul i
la nodul j
.
Date de ieșire
Programul va afișa pe ecran numărul c
, reprezentând numărul de vârfuri ale componentei tare conexe în care se află vârful k
.
Restricții și precizări
1 ≤ k ≤ n ≤ 100
Exemplu
Intrare
8 12 3 1 3 3 5 5 7 7 1 2 6 6 8 8 2 1 4 4 6 4 8 4 2 1 8
Ieșire
4
Explicație
Graful are 3
componente tare conexe {1,3,5,7}
, {2,6,8}
și {4}
, iar vârful 3
se află în componenta {1,3,5,7}
.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema ctck:
#include <iostream>
using namespace std;
int A[101][101],n,m,S[101],P[101],c,k;
void DF_succ(int v, int c)
{
S[v]=c;
for(int i=1;i<=n;i++)
if(!S[i] && A[v][i])
DF_succ(i,c);
}
void DF_pred(int v, int c)
{
P[v]=c;
for(int i=1;i<=n;i++)
if(!P[i] && A[i][v])
DF_pred(i,c);
}
int main()
{
cin>>n>>m>>k;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
A[x][y]=1;
}
DF_succ(k,1);
DF_pred(k,1);
for(int j=1;j<=n;j++)
if(S[j]!=P[j])
S[j]=P[j]=0;
for(int i=1;i<=n;i++)
if(S[i]==1)
c++;
cout<<c;
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #3421 ctck
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3421 ctck de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!