📜  计算断开图中的单个节点隔离子图

📅  最后修改于: 2022-05-13 01:57:54.330000             🧑  作者: Mango

计算断开图中的单个节点隔离子图

给出了一个具有 N 个顶点和 K 个边的不连通图。任务是找到单例子图的计数。单例图是只有一个顶点的图。
例子:

Input : 
Vertices : 6
Edges :    1 2
           1 3
           5 6
Output : 1
Explanation :  The Graph has 3 components : {1-2-3}, {5-6}, {4}
Out of these, the only component forming singleton graph is {4}.

对于以邻接表表示形式给出的图,这个想法很简单。我们遍历列表并找到列表中没有元素的索引(代表一个节点),即没有连接的组件。
以下是表示:

C++
// CPP code to count the singleton sub-graphs
// in a disconnected graph
#include 
using namespace std;
 
// Function to compute the count
int compute(vector graph[], int N)
{
    // Storing intermediate result
    int count = 0;
 
    // Traversing the Nodes
    for (int i = 1; i <= N; i++)
 
        // Singleton component
        if (graph[i].size() == 0)
            count++;   
 
    // Returning the result
    return count;
}
 
// Driver
int main()
{
    // Number of nodes
    int N = 6;
 
    // Adjacency list for edges 1..6
    vector graph[7];
 
    // Representing edges
    graph[1].push_back(2);
    graph[2].push_back(1);
 
    graph[2].push_back(3);
    graph[3].push_back(2);
 
    graph[5].push_back(6);
    graph[6].push_back(5);
 
    cout << compute(graph, N);
}


Java
// Java code to count the singleton sub-graphs
// in a disconnected graph
import java.util.*;
 
class GFG
{
 
// Function to compute the count
static int compute(int []graph, int N)
{
    // Storing intermediate result
    int count = 0;
     
    // Traversing the Nodes
    for (int i = 1; i < 7; i++)
    {
        // Singleton component
        if (graph[i] == 0)
            count++;    
    }
         
    // Returning the result
    return count;
}
 
// Driver Code
public static void main(String[] args)
{
    // Number of nodes
    int N = 6;
 
    // Adjacency list for edges 1..6
    int []graph = new int[7];
    // Representing edges
    graph[1] = 2;
    graph[2] = 1;
    graph[2] = 3;
    graph[3] = 2;
    graph[5] = 6;
    graph[6] = 5;
 
    System.out.println(compute(graph, N));
}
}
 
// This code is contributed by PrinciRaj1992


Python3
# Python code to count the singleton sub-graphs
# in a disconnected graph
  
# Function to compute the count
def compute(graph, N):
    # Storing intermediate result
    count = 0
   
    # Traversing the Nodes
    for i in range(1, N+1):
   
        # Singleton component
        if (len(graph[i]) == 0):
            count += 1   
   
    # Returning the result
    return count
   
# Driver
if __name__ == '__main__':
 
    # Number of nodes
    N = 6
   
    # Adjacency list for edges 1..6
    graph = [[] for i in range(7)]
   
    # Representing edges
    graph[1].append(2)
    graph[2].append(1)
   
    graph[2].append(3)
    graph[3].append(2)
   
    graph[5].append(6)
    graph[6].append(5)
   
    print(compute(graph, N))


C#
// C# code to count the singleton sub-graphs
// in a disconnected graph
using System;
 
class GFG
{
 
// Function to compute the count
static int compute(int []graph, int N)
{
    // Storing intermediate result
    int count = 0;
     
    // Traversing the Nodes
    for (int i = 1; i < 7; i++)
    {
        // Singleton component
        if (graph[i] == 0)
            count++;    
    }
         
    // Returning the result
    return count;
}
 
// Driver Code
public static void Main(String[] args)
{
    // Number of nodes
    int N = 6;
 
    // Adjacency list for edges 1..6
    int []graph = new int[7];
     
    // Representing edges
    graph[1] = 2;
    graph[2] = 1;
    graph[2] = 3;
    graph[3] = 2;
    graph[5] = 6;
    graph[6] = 5;
 
    Console.WriteLine(compute(graph, N));
}
}
 
// This code is contributed by 29AjayKumar


Javascript


输出:

1