Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2012, 12:04   #1
FantaC
 
Регистрация: 23.02.2012
Сообщений: 4
По умолчанию Алгоритм Дейкстры

"Для заданных n(1<=n<=500), m(1<=m<=n*n), v1 v2(1<=v1,v2<=n), где n-число вершин неор графа, m - количество ребер, v1 стартовая вершина v2 конечная вершина, найти кратчайшее расстояние от v1 до v2.
Входные данные
первая строка - n m v1 v2
далее m строк с описанием ребер.
Выходные данные - искомая длина, если пути не существует вывести -1"
Пример
Ввод
2 1 1 2
2 1 2
Вывод
2

Мое решение для задачи не проходит все тесты, помогите пожалуйста понять что не так.
Код:
#include <iostream>
using namespace std;
const int inf = 255555555;
int main()
{
	int n, m, v1, v2, sourse, finish, dl, min;
	bool temp;
	cin>>n>>m>>v1>>v2;
	int ** graf = new int *[n];
	for(int i = 0; i < n; i++)
		graf[i] = new int [n];
	int *d=  new int[n];
	bool *used = new bool [n];
	for(int i = 0; i < n; i++)
		used[i]= 0;
	for(int i = 0; i < n; i++)
		d[i] = inf;
	for(int i = 0; i < n; i++)
		for(int j = 0; j < n; j++)
			graf[i][j]= inf;
	for(int i = 0; i < m; i++)
	{
		cin>>sourse>>finish>>dl;
		graf[sourse-1][finish-1]= dl;
		graf[finish-1][sourse-1]= dl;
	}
	d[v1-1]=0;
	while(true)
	{
		temp = false;
		min = inf/2;
		for(int i = 0; i < n; i++)
			if(d[i]<min && !used[i]) 
			{
				min = i;
				temp= true;
			}
		if(!temp) break;
		used[min] = true;
		for(int i = 0; i < n; i++)
			if(d[i]>d[min]+graf[min][i])
				d[i]= d[min]+graf[min][i];

		
	}
		if(d[v2-1]>inf/2) cout<<"-1";
		else cout<<d[v2-1];
	delete[] used;
	delete[] d;
	for(int i = 0; i < n; i++)
	delete[] graf[i];
	delete[] graf;
	return 0;
}

Последний раз редактировалось FantaC; 24.02.2012 в 13:28.
FantaC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм Дейкстры (С++) DemonScorpion Помощь студентам 4 18.11.2015 18:41
Алгоритм Дейкстры Opiym Общие вопросы .NET 1 29.05.2010 17:04
Алгоритм Дейкстры tarnis Общие вопросы Delphi 4 11.05.2010 14:00
Алгоритм Дейкстры andis Помощь студентам 0 24.01.2010 17:42
Алгоритм Дейкстры Dimon88 Помощь студентам 2 03.11.2007 17:13