Peut Dijkstra Unique Source de plus court Chemin Algorithme de détecter une boucle infinie dans un graphique?

Alors je suis venu à ce beau problème qui vous demande d'écrire un programme qui détecte si un infini négatif le plus court chemin d'accès n'existe dans un graphe orienté. (Peut également être considéré comme constatation de l'existence d'un "cercle vicieux" existe dans le graphe). Voici un lien pour le problème:

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=499

J'ai réussi à résoudre le problème en exécutant Bellman Ford Algorithme à deux reprises, en commençant par n'importe quelle source dans le graphique. La deuxième fois que je lance l'algorithme, - je vérifier si un nœud peut être détendu. Si oui, alors il est certainement l'un cycle négatif dans le graphique. Ci-dessous mon code C++:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int test;
cin>>test;
for(int T=0; T<test; T++)
{
int node, E;
cin>>node>>E; 
int **edge= new int *[E];
for(int i=0; i<E; i++)
{
edge[i]= new int [3];
cin>>edge[i][0]>>edge[i][1]>>edge[i][2];
}
int *d= new int [node];
bool possible=false;
for(int i=0; i<node;i++)
{
d[i]= 999999999;
}
d[node-1]=0;
for(int i=0; i<node-1; i++)
{
for(int j=0; j<E; j++)
{
if(d[edge[j][1]]>d[edge[j][0]]+edge[j][2])
d[edge[j][1]]=d[edge[j][0]]+edge[j][2];
}
}
//time to judge!
for(int i=0; i<node-1; i++)
{
for(int j=0; j<E; j++)
{
if(d[edge[j][1]]>d[edge[j][0]]+edge[j][2])
{
possible=true;
break;
}
} 
if(possible)
break;
}
if(possible)
cout<<"possible"<<endl;
else
cout<<"not possible"<<endl;
}
}

Un professeur m'a dit une fois que Dijkstra plus court chemin algorithme ne peut pas trouver un tel cycle négatif, mais il ne la justifie pas. En fait je doute de cette affirmation.

Ma question est, peut Dijktstra unique source de plus court chemin algorithme de détecter que le cycle négatif?

Bien sûr, je peux essayer de Dijkstra et de vérifier si elle fonctionne, mais j'ai été ravie de partager cette idée avec vous.

  • ce que vous entendez par l'infini?
  • Désolé, je pense que le bon terme est "cycle négatif". Dans un pesé graphique, un cycle négatif est un cycle dont la somme des pondérations de bords est négatif.