Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define MAX 100
- typedef long long int ll;
- vector< vector<ll> > graph;
- ll adjMatrix[MAX+1][MAX+1];
- ll b[MAX+1][MAX+1];
- ll n, m;
- void FloydWarshall()
- {
- for(ll k = 1; k <= n; k++)
- {
- for(ll i = 1; i <= n; i++)
- {
- for(ll j = 1; j <= n; j++)
- {
- if(b[i][k] != INT_MAX && b[k][j] != INT_MAX && i != j)
- {
- if(( b[i][k]+b[k][j] < b[i][j] )|| b[i][j] == INT_MAX)
- {
- b[i][j] = b[i][k]+b[k][j];
- }
- }
- }
- }
- }
- }
- int main()
- {
- cin >> n >> m;
- for(ll i = 0; i < m; i++)
- {
- vector<ll> V;
- ll u, v, w;
- cin >> u >> v >> w;
- V.push_back(u);
- V.push_back(v);
- V.push_back(w);
- graph.push_back(V);
- }
- for(ll i = 0; i <= n; i++)
- {
- for(ll j = 0; j <= n; j++)
- {
- adjMatrix[i][j] = INT_MAX;
- b[i][j] = INT_MAX;
- }
- }
- for(ll i = 0; i < graph.size(); i++)
- {
- ll u = graph[i][0], v = graph[i][1], w = graph[i][2];
- adjMatrix[u][v] = w;
- b[u][v] = w;
- }
- FloydWarshall();
- for(ll i = 1; i <= n; i++)
- {
- cout << "Distances with respect to " << i << " :" << endl;
- for(ll j = 1; j <= n; j++)
- {
- cout << b[i][j] << "\t";
- }
- cout << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement