Witajcie. Mam mały problem, otóż mam sobie program, ten cały algorytm, ale niestety nie wypisuje mi wyniku, nie wiem czemu... Może się okazać, że to jakiś podstawowy błąd, ale dopiero się uczę i nie mogę znaleŹć. Proszę o pomoc ;)

Program:

#include<cstdio>
#include<vector>
 
using namespace std;
 
int n, m, s; 
 
vector<vector<int> >E;
vector<int>D;
 
const int INF = (1 << 30); 
 
int main()
{
    scanf("%d %d %d", &n, &m, &s); 
 
    E.resize(m);
 
    for (int i = 0; i < m; i++) 
    {
        int a , b, c;
 
        scanf("%d %d %d", &a, &b, &c);
        E[i].resize(3);
        E[i][0] = a;
        E[i][1] = b;
        E[i][2] = c;
    }
 
    D.resize(n);
 
    for (int i = 0; i < n; i++) D[i]=INF;      
        D[s] = 0; 
    for (int i = 1; i<=n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            int a = E[j][0], b = E[j][1], c = E[j][2];
            if (D[a]!=INF && D[a] < D[b]-c) 
            {
                D[b] = D[a]+c; 
 
                if (i==n)
                {
                    printf("NO"); 
                    return 0;
                }
            }
        }
     }
     for (int i = 0; i < m; i++)
     {
        if (i!=s && D[i]<INF)
        {
                 printf("%d %d\n", i, D[i]); 
        }
        return 0;
     }
     system("pause");
}