Переделать код из C++ в C#
Я написал код на c++, но мне нужно его сделать на c#, а синтаксис не знаю , к сожалению. Буду рад , если поможете переделать его под c#. Задание состоит в том , чтобы посчитать компоненты связанности в неориентированном графе.
Во входном файле записано два числа N и M (0 < N ≤ 100000, 0 ≤ M ≤ 100000). В следующих M строках записаны по два числа i и j (1 ≤ i, j ≤ N), которые означают, что вершины i и j соединены ребром.
Формат вывода
В первой строчке выходного файла выведите количество компонент связности. Далее выведите сами компоненты связности в следующем формате: в первой строке количество вершин в компоненте, во второй - сами вершины в порядке возрастания. Входные данные: (6 4) (3 1) (1 2) (5 4) (2 3)
Выходные данные: (3) (3) (1 2 3) (2) (4 5) (1) (6)
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
vector<vector<int>> connectedComponents(const vector<vector<int>>& a)
{
int n = a.size();
vector<bool> mark(n, false);
vector<vector<int>> res;
for (int i = 0; i < n; ++i) {
if (mark[i] == false) {
mark[i] = true;
vector<int> cur;
cur.push_back(i);
queue<int> q;
q.push(i);
while (!q.empty()) {
int x = q.front();
q.pop();
for (int i = 0; i < a[x].size(); ++i) {
int c = a[x][i];
if (mark[c]) {
continue;
}
mark[c] = true;
q.push(c);
cur.push_back(c);
}
}
res.push_back(cur);
}
}
return res;
}
int main()
{
int n, m;
cin >> n >> m;
vector<vector<int>> a(n, vector<int>());
for (int i = 0; i < m; ++i) {
int x,y;
cin >> x >> y;
--x;
--y;
a[x].push_back(y);
a[y].push_back(x);
}
auto r = connectedComponents(a);
cout << r.size() << endl;
for (int i = 0; i < r.size(); ++i) {
cout << r[i].size() << endl;
for (int j = 0; j < r[i].size(); ++j) {
cout << r[i][j] + 1<< " ";
}
cout << endl;
}
return 0;
}