Int getWeight { return weight


Download 153.5 Kb.
Sana23.12.2022
Hajmi153.5 Kb.
#1046380
Bog'liq
Untitled-1


O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
MUSTAQIL ISH

Bajardi: 218-21 guruh talabasi


Risqulov Abbosxon
Tekshirdi: Djangazova Kumriniso 

Toshkent – 2022


Berilgan cho’qqidan eng uzun yo'lni topish algoritmini ishlab chiqing


DASTUR KODI:


#include


#include
#include
#include
#define NINF INT_MIN
using namespace std;
class AdjListNode {
int v;
int weight;

public:
AdjListNode(int _v, int _w)


{
v = _v;
weight = _w;
}
int getV() { return v; }
int getWeight() { return weight; }
};
class Graph {
int V;

list* adj;


void topologicalSortUtil(int v, bool visited[],
stack& Stack);

public:
Graph(int V);


~Graph();

void addEdge(int u, int v, int weight);


void longestPath(int s);
};

Graph::Graph(int V)


{
this->V = V;
adj = new list[V];
}

Graph::~Graph()


{
delete [] adj;
}
void Graph::addEdge(int u, int v, int weight)
{
AdjListNode node(v, weight);
adj[u].push_back(node);
}

void Graph::topologicalSortUtil(int v, bool visited[],


stack& Stack)
{
visited[v] = true;
list::iterator i;
for (i = adj[v].begin(); i != adj[v].end(); ++i) {
AdjListNode node = *i;
if (!visited[node.getV()])
topologicalSortUtil(node.getV(), visited, Stack);
}
Stack.push(v);
}
void Graph::longestPath(int s)
{
stack Stack;
int dist[V];

bool* visited = new bool[V];


for (int i = 0; i < V; i++)
visited[i] = false;
for (int i = 0; i < V; i++)
if (visited[i] == false)
topologicalSortUtil(i, visited, Stack);
for (int i = 0; i < V; i++)
dist[i] = NINF;
dist[s] = 0;

while (Stack.empty() == false) {


int u = Stack.top();
Stack.pop();

list::iterator i;


if (dist[u] != NINF) {
for (i = adj[u].begin(); i != adj[u].end(); ++i){
if (dist[i->getV()] < dist[u] + i->getWeight())
dist[i->getV()] = dist[u] + i->getWeight();
}
}
}
for (int i = 0; i < V; i++)
(dist[i] == NINF) ? cout << "INF " : cout << dist[i] << " ";
delete [] visited;
}
int main()
{

Graph g(6);


g.addEdge(0, 1, 5);
g.addEdge(0, 2, 3);
g.addEdge(1, 3, 6);
g.addEdge(1, 2, 2);
g.addEdge(2, 4, 4);
g.addEdge(2, 5, 2);
g.addEdge(2, 3, 7);
g.addEdge(3, 5, 1);
g.addEdge(3, 4, -1);
g.addEdge(4, 5, -2);

int s = 1;


cout << "berilgan cho'qqidan eng uzun yo'l "
" "
<< s << " \n";
g.longestPath(s);

return 0;


}


2-masala
Binar daraxtni o’ngdan chapga va chapdan o’ngga ko’rik o’tkazish dasturi va


algoritmini keltiring
#include
using namespace std;
struct Node
{
int data;
struct Node *left, *right;
};
void printLeafNodes(Node *root)
{
if (!root)
return;
if (!root->left && !root->right)
{
cout << root->data << " ";
return;
}
if (root->left)
printLeafNodes(root->left);

if (root->right)


printLeafNodes(root->right);
}
Node* newNode(int data)
{
Node *temp = new Node;
temp->data = data;
temp->left = temp->right = NULL;
return temp;
}
int main()
{
Node *root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->right->left = newNode(5);
root->right->right = newNode(8);
root->right->left->left = newNode(6);
root->right->left->right = newNode(7);
root->right->right->left = newNode(9);
root->right->right->right = newNode(10);

printLeafNodes(root);


return 0;
}



Download 153.5 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling