Переделать программу из С++ в C#
Формулировка задачи:
Ребят, помогите переделать код на С#
struct Node {
std::vector<Node*> v;
int depth;
} nodes[256];
/*
создается структура с именем Node; это как класс, только у структуры по умолчанию открыты переменные
Node - что то типа собственного типа данных, содержашего:
1) вектор v указателей на структуру. как бы указатель - это просто ссылка на место расположения каждой Node в памяти программы.
2) величину каждого из векторов (хотя объект std::vector может возвращать свой размер, эта переменная служит для логической связки с вектором и для убоства обращения с твоим типом данных Node;
объявление после закрывающей скобки служит объявлением 256 объектов типа Node
*/
int N, M;
int bfs(Node* start) {
int ret = 0; // сумма длинн всех узлов, как я понимаю
for(auto& n : nodes) {
n.depth = std::numeric_limits<int>::max();
}
/*
компактная форма цикла for; аналог foreach в других языках. типа для каждого объекта nodes, и даже пофиг на то какой у них индекс, указать максимум величины инт и записать в переменную depth для каждого объекта n. такое объявление auto& n значит что переменная n примет свой тип только во время исполнения, а знак & нужен только для того, чтоб мы могли стать ссылкой на целый массив.
*/
std::queue<Node*> Q; //объявление очереди
start->depth = 0; //Решение задачи: «Переделать программу из С++ в C#»
textual
Листинг программы
public class Node
{
public Node()
{
v = new List<Node>();
}
public List<Node> v { get; set; }
public int depth { get; set; }
}
public static Node[] nodes = new Node[256];
public static int N, M;
public static int bfs(IList<Node> start)
{
int ret = 0;
foreach (Node n in nodes)
{
n.depth = int.MaxValue;
}
var Q = new Queue<Node>();
start[0].depth = 0;
// здесь должен быть какой-то код, которого не было в примере
return 0; // вместо 0 должно быть что-то другое
}