Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.01.2015
Сообщений: 4

Реализация графов на java

12.01.2015, 14:48. Показов 4087. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить задачу с графами
Вы получите список городов. Каждый прямое соединение между двумя городами имеет свою стоимость транспортировки (целое число больше 0).Цель состоит в том, чтобы найти пути минимальной стоимости между парами городов. Предположим, что стоимость каждого пути (который является суммой затрат на всех прямых соединений belongning этому пути) составляет не более 200000. название города является строка, содержащая символов а, ..., Z и не более 10 символы long.2)




вход

с [число тестов <= 10]
N [число городов <= 10000]
NAME [название города]
р [число соседей городской NAME]
Стоимость NR [NR - индекс города, подключенного к имя (индекс первого города 1)]
*********** [стоимость - стоимость перевозки]
R [число путей, чтобы найти <= 100]
NAME1 NAME2 [NAME1 - источник, NAME2 - назначение]
[пустая строка отделения тесты]

выход

Стоимость [минимальная стоимость перевозки из города NAME1 в город NAME2 (по одному в строке)]

пример

Вход:
1
4
Гданьск
2
2 1
3 3
Быдгощ
3
1 1
3 1
4 4
Торунь
3
1 3
2 1
4 1
Warszawa
2
2 4
3 1
2
Гданьск Варшава
Быдгощ Варшава

Выход:
3
2
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.01.2015, 14:48
Ответы с готовыми решениями:

Реализация графов
Помогите пожалуйста!!!!! как написать программу на Си ++ на эту тему :реализация различных типов графов и операций над ними. спасибо...

Реализация графов в С шарпе
Привет, народ!!! Помогите, не могу понять как реализовать граф на С шарпе. Вот как выглядит здание ===Найти все вершины графа, к которым от...

Реализация алгоритмов теории графов на С/С++
может у кого то есть готовая из этого списка или кто может помочь Реализовать алгоритм поиска пути в лабиринте. Волновой алгоритм....

3
 Аватар для bazJaz
36 / 33 / 21
Регистрация: 11.07.2014
Сообщений: 390
13.01.2015, 12:16
задание так криво написано что даже лень читать
0
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 1
13.01.2015, 15:21
Мне такую же задачу подкинули после того как отослал резюме)) Вот сейчас сижу решаю.
0
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 1
19.02.2015, 23:41
есть решение на c++. Если пригодится то вот:
китайский вариант http://m.blog.csdn.net/blog/kenden23/39785483.
его я не сильно понял поэтому сварганил свой тоже на с++(но думаю для шарящих переделать на java не проблема):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
//---------------------------------------------------------------------------
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string>
#include <string.h>
#include <set>
#include <cmath>
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
using namespace std;
//---------------------------------------------------------------------------
typedef struct {            // type of structure describing the city
     char Name[11];         //name of  city
     int p;                 //number of neigbour cities
     int s_cost;            //city cost (defined as minimum sum of transportation costs to it + cost of the previous city) initially equal to infinity
     int **nr_cost;         //array for memorizing of neighbur city and the transportation cost to it
 } tcity;
//---------------------------------------------------------------------------
int  s=0,n=0,r=1;
//--------------------------------------------------------------------------- 
int mincostway(tcity* city, char Name1[11], char Name2[11]); 
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
 printf("Input:\n");                                    //input the number of tests <= 10
 scanf("%d", &s);
 if((s>=0)&&(s<11))
  for(int i=0;i<s;i++)
  {  
 scanf("%d", &n);                                       // input the number of cities <= 10000
 if ((n>0)&&(n<10001))
  {
    tcity *city = new tcity[n];                         // reserve memory for array of structures (of city)
    for (int i=0;i<n;i++)
    {
     scanf("%s[a-z]",city[i].Name);                     //input the name of the city
     cin>>city[i].p;                                    //input the number of neighbour cities
     city[i].s_cost=pow(2,sizeof(int) * 8.0 - 1) - 1;   //give the city cost equal the infinity (this is maximum value for type int)
     city[i].nr_cost = new int *[city[i].p];            // reserve memory for array of neigbour cities
     for (int j=0;j<city[i].p;j++)                      //input the index and cost of neigbour cities
        {
         city[i].nr_cost[j]=new int [2];
         scanf("%d%d",&city[i].nr_cost[j][0],&city[i].nr_cost[j][1]);
         city[i].nr_cost[j][0]--;
        }
                 
    }
  
scanf("%d",&r);                             //input the number of paths to find <= 100
if((r>0)&&(r<101))
{ 
 char **s = new char* [r*2];
 for(int i=0;i<r*2;i++)                     //input NAME1 - source, NAME2 - destination
 {
    s[i] = new char [11];                   
    s[i+1] = new char [11];
    scanf("%s%s",s[i],s[i+1]);
    i++;
 }
 printf("\nOutput:\n");
 
 for(int i=0;i<r*2;i++)
 {
  printf("%d\n",mincostway(city,s[i],s[i+1]));          //output result
  i++;
 }
 
for (int count = 0; count < r*2; count++)
        delete [] s[count];
        
}
 
/*for(int i = 0; i<n;i++)
    for (int j=0;j<city[i].p;j++)
      delete[] city[i].nr_cost;*/
 delete[] city;
  }
  
  }
 return 0;
}
//---------------------------------------------------------------------------
//function returns minimal transportation cost between cities Name1 and Name2. 
//search of the way is performed with the help of Dejkstra algorithm
int mincostway(tcity* city,char Name1[11], char Name2[11])
{
 
int min_cost;                                       //length of the way between two neighbur cities with minimal cost 
int minindex_pos=-1;                                //index of theneighbur city with minimal transport cost
int minresult=pow(2,sizeof(int) * 8.0 - 1) - 1;     //minimal length of the way between two given cities
int count=0;                                        //counter of city visits
int first=-1,last=-1;                               //index of the first and the last city
set <int> SetCity;                                  //number of visited cities
 
//search for indexes of the first and the least cities
for (int i=0;i<n;i++)
     {
        if(!(strcmp(city[i].Name,Name1))) first=i;
        if(!(strcmp(city[i].Name,Name2))) last=i;
     }
if((last!=-1)&&(first!=-1))
    {
     city[first].s_cost=0;                              //cost of the first city is minimal and equal 0 
     while (count<n)                                    //search for length of the way until we walk though all cities
     {
        min_cost=pow(2,sizeof(int) * 8.0 - 1) - 1;      //length of the way with minimal cost is equal infinity
        for (int i=0;i<city[first].p;i++)               //go over the ways to neighbour cities 
        {
        if(!(SetCity.count(city[first].nr_cost[i][0])))//check if we have visited this city
        {
         //if not
         //check if city cost is bigger than sum of city cost of the previous city and its transportation cost
         //than the current city cost is equal the sum of city cost of the previous city and its transportation cost
         if (city[city[first].nr_cost[i][0]].s_cost>(city[first].s_cost)+city[first].nr_cost[i][1])
             city[city[first].nr_cost[i][0]].s_cost=city[first].nr_cost[i][1]+city[first].s_cost;
         //find index of city whis minimal cost
         if(min_cost>city[city[first].nr_cost[i][0]].s_cost)
            {
              min_cost=city[city[first].nr_cost[i][0]].s_cost;
              minindex_pos=city[first].nr_cost[i][0];
            }
          //check if we have reached the destination point  
          if (city[first].nr_cost[i][0]==last)
            if(minresult>city[city[first].nr_cost[i][0]].s_cost)
             {
                minresult=city[city[first].nr_cost[i][0]].s_cost;   //if its bigger than give it a new value
                //than we have to find other not visited cities
                first =0;
                while (SetCity.count(first)) first++;
             }
        }
        }
        //
        SetCity.insert(first);                          //mark current city as visited
        first=minindex_pos;                             //go to the city with minimal cost
        count++;                                        //increase counter of visited cities
     }
    }
    return minresult; 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2015, 23:41
Помогаю со студенческими работами здесь

Реализация графов своим классом и DFS
Здравствуйте! В вузе я получил вот такое задание: Создать класс в соответствии с вариантом, реализующий граф: 1)В качестве...

Теорие графов. Композиция двух неор. графов.
Здравствуйте. Прошу помощи уже здесь :| (old topic)... Прошу помочь с составлением алгоритма &quot;Композиции двух неориентированных...

Почему графов с семью вершинами меньше чем графов с шестью вершинами?
Необходимо нарисовать все регулярные графы с шестью вершинами (граф называется регулярным при равенстве степеней всех вершин) и с семью...

Реализация ls на Java
Существуют ли Java-эквивалент консольной команды ls? То есть если ввести код: String l = new String ; File dir = new...

Реализация клонирования в Java
Main.java public class Main { public static void main(String args){ FoodItem Snickers2 = new FoodItem(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru