CSharp 实现连通分量 源代码
时间: 2023-12-04 08:57:44 浏览: 29
以下是一个简单的 C# 实现连通分量的示例代码:
```csharp
using System;
using System.Collections.Generic;
class Graph
{
private int V; // 顶点数
private List<int>[] adj; // 邻接表表示图
public Graph(int v)
{
V = v;
adj = new List<int>[V];
for (int i = 0; i < V; i++)
adj[i] = new List<int>();
}
public void AddEdge(int v, int w)
{
adj[v].Add(w);
adj[w].Add(v);
}
// DFS 遍历连通分量
private void DFSUtil(int v, bool[] visited)
{
visited[v] = true;
Console.Write(v + " ");
foreach (int i in adj[v])
{
if (!visited[i])
DFSUtil(i, visited);
}
}
// 找到所有连通分量
public void FindConnectedComponents()
{
bool[] visited = new bool[V];
for (int v = 0; v < V; v++)
{
if (!visited[v])
{
DFSUtil(v, visited);
Console.WriteLine();
}
}
}
}
class Program
{
static void Main(string[] args)
{
Graph g = new Graph(5);
g.AddEdge(1, 0);
g.AddEdge(2, 3);
g.AddEdge(3, 4);
Console.WriteLine("Following are connected components");
g.FindConnectedComponents();
}
}
```
这段代码实现了一个无向图的连通分量查找功能。如果你有其他问题,欢迎继续提问。