Maison > développement back-end > C++ > le corps du texte

Trouver le nombre de nœuds récepteurs dans un graphique en utilisant C++

WBOY
Libérer: 2023-09-01 19:25:05
avant
588 Les gens l'ont consulté

Trouver le nombre de nœuds récepteurs dans un graphique en utilisant C++

Dans cet article, nous décrirons les informations importantes pour résoudre le nombre de nœuds récepteurs dans un graphique. Dans ce problème, nous avons un graphe acyclique orienté avec N nœuds (1 à N) et M arêtes. Le but est de savoir combien de nœuds récepteurs il y a dans un graphe donné. Un nœud récepteur est un nœud qui ne génère aucun front sortant. Voici un exemple simple -

Input : n = 4, m = 2

Edges[] = {{2, 3}, {4, 3}}
Output : 2
Copier après la connexion

Un moyen simple de trouver la solution

Dans cette méthode, nous allons parcourir les bords du graphique, y pousser différents éléments de l'ensemble pointé par le bord, puis soustraire la taille de l'ensemble. nombre total de nœuds présents.

Exemple

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n = 4; // number of nodes.
    int m = 2; // number of edges.
    vector<pair<int, int>> edges = {{2, 3}, {4, 3}}; // the edges going from first to second.
    set<int> s;
    for(int i = 0; i < m; i++){
        s.insert(edges[i].first); // will keep value of
                               // distinct node from which edges are going out.
    }
    cout << n - s.size(); // answer is the total number of nodes - number of non sink nodes.
    return 0;
}
Copier après la connexion

Sortie

2
Copier après la connexion

Description du code ci-dessus

Dans ce code, nous allons parcourir les bords du vecteur et insérer le premier élément de la paire dans l'ensemble. Il ne conserve que des éléments distincts, nous allons donc maintenant soustraire la taille spécifique de la collection du nombre total de nœuds. La complexité temporelle du programme présenté ci-dessus est O(N), où N représente le nombre d'arêtes présentes dans le graphique.

Conclusion

Dans cet article, nous avons résolu le problème de trouver le nombre de nœuds récepteurs présents dans un graphe en complexité temporelle O(N) à l'aide d'ensembles. Nous avons également appris un programme C++ pour résoudre ce problème et une méthode complète pour résoudre ce problème. Nous pouvons écrire le même programme dans d'autres langages tels que C, Java, Python et d'autres langages. J'espère que cet article vous sera utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!