Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (111)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (50)
Tipul înregistrare (26)
Recursivitate (57)
Alocarea dinamică a memoriei (2)
Liste înlănţuite (25)
Algoritmul lui Lee (1)
Clasa a XI-a
Metoda "Divide et impera" (12)
Metoda Backtracking (86)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (40)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (14)
Programare vizuală în C# (19)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Se da un graf neorientat cu n varfuri si m muchii, citit prin vectorul muchiilor. Sa se afiseze cea mai mare dintre componentele sale conexe.
Ex: Pentru graful alaturat se va afisa componenta conexa 1 2 4 5

#include<fstream.h>
 fstream f("graf.in", ios::in);
 fstream g("graf.out",ios::out);
  int a[100][100],n,m,p[100],x[100],lmax,smax[100];
   void citire()
      { int x,y,i;
	f>>n>>m;
	for(i=1;i<=m;i++)
	    { f>>x>>y;
	     a[x][y]=1;
	     a[y][x]=1;
	   }
      }

  void bf(int k)
     { int s,d,i;
       x[1]=k;
       p[k]=1;
       s=1; d=1;
       while(s<=d)
	  { for(i=1;i<=n;i++)
	   if(a[x[s]][i]==1 && !p[i]) {d++;
				       x[d]=i;
				       p[i]=1;
				      }
	   s++;
	 }
       if(d>lmax) { lmax=d;
		   for(i=1;i<=lmax;i++)
		       smax[i]=x[i];
		 }

     }

  void main()
     { citire();
      for(int i=1;i<=n;i++)
      if(!p[i]) bf(i);
      for(i=1;i<=lmax;i++)
      g<<smax[i]<<" ";
     }




25 apr 2024
Site-ul conține 884 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian