Перевести код c++ в c#
Формулировка задачи:
Здравствуйте, помогите пожалуйста перевести код с++ в си шарп
#include <algorithm> #include <iostream> #include <vector> using namespace std; /* Объявляем структуру Ребро, которой будем пользоваться для построения графа и дерева */ struct edge{ int x, y; //вершины edge(){} edge(int a, int b){ x = a; y = b; } }; int main() { int n, m; cin >> n >> m; vector <edge> graph (m); //ребра исходного графа vector <edge> tree; //ребра дерева vector <int> variety (n); //множество вершин /* variety[n] = m - вершина n принадлежит множеству m. Следующий цикл определяет для каждой вершины свое множество */ for (int i = 0; i < n; i++){ variety[i] = i; } /* Заполняем ребра исходного графа значениями из стандартного ввода */ for (int i = 0; i < m; i++){ int a, b; cin >> a >> b; graph[i].x = a; graph[i].y = b; } /* Проверяем вершины каждого ребра. Если вершины не принадлежат одному и тому же множеству, но такое ребро добавляем в наше дерево, а вершины помещаем в одно множество */ for (int i = 0; i < m; i++){ int a = graph[i].x; int b = graph[i].y; if (variety[a] != variety[b]){ tree.push_back(graph[i]); int old_variety = variety[b], new_variety = variety[a]; for (int j = 0; j < n; j++){ if (variety[j] == old_variety){ variety[j] = new_variety; } } } } for(int i = 0; i < n - 1; i++){ //по принципу построения дерева, оно содержит n-1 ребро cout << tree[i].x << " " << tree[i].y; if (i != n-2){ cout << endl; } } return 0; }
Решение задачи: «Перевести код c++ в c#»
textual
Листинг программы
class Program { static void Main(string[] args) { int n, m; n = int.Parse(Console.ReadLine()); m = int.Parse(Console.ReadLine()); List<edge> graph = new List<edge>(m); List<edge> tree = new List<edge>(); List<int> variety = new List<int>(n); for (int i = 0; i < n; i++) { variety.Add(i); } for (int i = 0; i < m; i++) { int a = int.Parse(Console.ReadLine()); int b = int.Parse(Console.ReadLine()); graph.Add(new edge(a, b)); } for (int i = 0; i < m; i++) { int a = graph[i].x; int b = graph[i].y; if (variety[a] != variety[b]) { tree.Add(graph[i]); int old_variety = variety[b], new_variety = variety[a]; for (int j = 0; j < n; j++) { if (variety[j] == old_variety) { variety[j] = new_variety; } } } } for (int i = 0; i < n-1; i++) { Console.WriteLine("{0} {1}", tree[i].x, tree[i].y); if (i != n - 2) Console.WriteLine(); } } struct edge { public int x, y; public edge(int a,int b) { x = a; y = b; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д