From c5fcf7179a83ef65c86c6a4a390029149e518649 Mon Sep 17 00:00:00 2001 From: Franciszek Malinka Date: Tue, 5 Oct 2021 21:49:54 +0200 Subject: Duzy commit ze smieciami --- semestr-4/aisd/themis/BELLMAN.cpp | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 semestr-4/aisd/themis/BELLMAN.cpp (limited to 'semestr-4/aisd/themis/BELLMAN.cpp') diff --git a/semestr-4/aisd/themis/BELLMAN.cpp b/semestr-4/aisd/themis/BELLMAN.cpp new file mode 100644 index 0000000..5a65096 --- /dev/null +++ b/semestr-4/aisd/themis/BELLMAN.cpp @@ -0,0 +1,55 @@ +#include +using namespace std; + +const int N = 503; +int dist[N]; +vector>> edges; +int main() +{ + ios_base::sync_with_stdio(false); + cin.tie(); + int n, m, s; + cin >> n >> m >> s; + for (int i = 0; i <= n; i++) + { + dist[i] = 2e9; + } + dist[s] = 0; + for (int i = 0; i < m; i++) + { + int u, v, w; + cin >> u >> v >> w; + edges.push_back({w, {u, v}}); + // edges.push_back({w, {v, u}}); + } + + for (int i = 0; i < n + 1; i++) + { + for (auto e : edges) + { + int w = e.first; + int u = e.second.first; + int v = e.second.second; + if (dist[v] > dist[u] + w) + { + dist[v] = dist[u] + w; + } + } + } + for (auto e : edges) + { + int w = e.first; + int u = e.second.first; + int v = e.second.second; + if (dist[v] > dist[u] + w) + { + cout << "NIE\n"; + return 0; + } + } + for (int i = 0; i < n; i++) + { + if (i != s && dist[i] < 1e9) + cout << i << " " << dist[i] << "\n"; + } +} \ No newline at end of file -- cgit v1.2.3