Witam!
Robię sobie zadanko Dostawca:
http://informatyka.wroc.pl/node/406?page=0,4

Mój kod:

 #include <iostream>
#include <algorithm>
#include <vector>
#define INF 1000000000
#define N 1002

using namespace std;

vector <int> kraw[N];
vector <int> waga[N];

bool vis[N];
bool dis[N];

int bellman_ford(int a, int b, int uuu)
{
    for(int i=1; i<=uuu; i++)
        dis[i] = INF;
    dis[a] = 0;
    for(int q=1; q<=uuu-1; q++)
    {
        for(int v=1; v<=uuu; v++)
        {
            for(int i=1; i<kraw[v].size(); i++)
            {
                int w = kraw[v][i];
                int k = waga[v][i];
                if(dis[v] > dis[w] + k)
                    dis[v] = dis[w] + k;
            }
        }
    }
    return dis[b];
}

int main()
{
    int v, e, a, b, c, t, g, h;
    int tab[100];
    cin >> v >> e;
    for(int i=0; i<e; i++)
    {
        cin >> a >> b >> c;
        kraw[a].push_back(b);
        kraw[b].push_back(a);
        waga[a].push_back(c);
    }
    cin >> t;
    for(int i=0; i<t; i++)
    {
        cin >> g >> h;
        tab[i] = bellman_ford(g, h, e);
    }
    for(int i=0; i<t; i++)
        cout << tab[i] << "\n";
    return 0;
}

Użyłem bellmana forda, bo jest prostszy w implementacji, a złożoność nie jest aż tyle gorsza. Tylko, że mój kod nie działa - po wprowadzeniu danych coś tam chwilę liczy, po czym się wywala.

Prosze o powiedzenie co jest źle, bo mało jest na ten temat w necie, a koniecznie muszę znać jakiś algorytm znajdujący najkrotsza droge miedzy jednym wierzcholkiem a wszystkimi pozostalymi (floyda warshalla juz znam).