O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
«Kompyuter injiniringi» fakulteti
Algoritmlarni loyihalashtirish fanidan
LABORATORIYA ISHI
Mavzu: Graflar bilan ishlovchi sodda algoritmlar.Graflarni tasvirlash. Eniga va tubiga qarab qidirish
Bajardi: CAL008-L2 guruhi talabasi
Tolipov Bohodir
Tekshirdi: Muhsinov Sh.
Toshkent 2020
Laboratoriya mashg’uloti № 2
Variant 12
Masalaning quyilishi: berilgan n = 4, e = 6 2 -> 0, 0 -> 2, 1 -> 2, 0 -> 1, 3 -> 3, 1 -> 3 grafning 2 uchidan boshlab chuqurligini aniqlash;
Dastur kodi:
#include
using namespace std;
class Graph
{
int V;
list *adj;
void DFSUtil(int v, bool visited[]);
public:
Graph(int V); // Constructor
// function to add an edge to graph
void addEdge(int v, int w);
void DFS(int v);
};
Graph::Graph(int V)
{ this->V = V;
adj = new list[V];
}
void Graph::addEdge(int v, int w)
{
adj[v].push_back(w);
}
void Graph::DFSUtil(int v, bool visited[])
{
visited[v] = true;
cout << v << " ";
list::iterator i;
for (i = adj[v].begin(); i != adj[v].end(); ++i)
if (!visited[*i])
DFSUtil(*i, visited);
}
void Graph::DFS(int v)
{
bool *visited = new bool[V];
for (int i = 0; i < V; i++)
visited[i] = false;
DFSUtil(v, visited);
}
int main()
{
Graph g(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
cout << "gragning chuqurliga"
" (2 dan boshlab) \n";
g.DFS(2);
return 0;
}
Do'stlaringiz bilan baham: |