void solver_SolverDone(object sender, SolverDoneEventArgs args)
        {
            OutputData output = args.Output;

            switch (output.State)
            {
                case OutputState.Done:
                    try
                    {
                        VM.PlacesOrder = string.Join(",", args.Output.Solution);
                        VM.TotalCost = args.Output.TotalCost;
                        VM.SolvingTime = args.Output.SolvingTime / 1000;
                        solution = new SolutionData(input, args.Output);
                    }
                    catch
                    {
                        MessageBox.Show("Błąd podczas wczytywania danych wynikowych algorytmu", "Uwaga");
                    }
                    break;
                case OutputState.Cancelled:
                    break;
                case OutputState.NoSolution:
                    MessageBox.Show("Brak rozwiązania");
                    break;
            }
            CommandManager.InvalidateRequerySuggested();
        }
        public SolutionWindow(SolutionData solution) : this()
        {
            this.solution = solution;
            this.input = solution.Input;

            PlotOutput(solution.Output);
        }