using namespace std; const int NOT_A_VERTEX = -1; void allPairs(vector<vector<int> >& a, vector<vector<int> >& d, vector<vector<int> >& path); int main() { int numberOfVertex; int numberOfRoads; int minDist; cin >> numberOfVertex; cin >> numberOfRoads; cin >> minDist; vector <vector <int> > a(numberOfVertex, vector<int>(numberOfVertex)); vector <vector <int> > d(numberOfVertex, vector<int>(numberOfVertex)); vector <vector <int> > path(numberOfVertex, vector<int>(numberOfVertex)); for(int c = 0 ; c < numberOfRoads; c++){ int i, j; cin >>i; cin >>j; a[i][j] = 1; } allPairs(a,d,path); return 0; } void allPairs(vector<vector<int> >& a, vector<vector<int> >& d, vector<vector<int> >& path){ int n = a.size(); for(int i = 0; i < n; i++){ for(int j = 0; j < n ; j++){ d[i][j] = a[i][j]; path[i][j] = NOT_A_VERTEX; } } for(int k = 0; k < n ; k++){ for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ if(d[i][k] + d[k][j] < d[i][j]){ d[i][j] = d[i][k] + d[k][j]; path[i][j] = k; } } } } }
for(int i = 0; i < n; i++){ for(int j = 0; j < n ; j++){ if(a[i][j] == 1) d[i][j] = a[i][j]; else d[i][j] = INFINITY; if(i == j) d[i][j] = 0; path[i][j] = NOT_A_VERTEX; } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)