Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Task : Bellman Ford
- Author : Phumipat C. [MAGCARI]
- Language : C++
- */
- #include<bits/stdc++.h>
- using namespace std;
- struct A{
- int u,v,w;
- };
- A edges[100010];
- int dis[100010];
- int main(){
- int n,m;
- scanf("%d %d",&n,&m);
- for(int i=1;i<=m;i++)
- scanf("%d %d %d",&edges[i].u,&edges[i].v,&edges[i].w);
- for(int i=1;i<=n;i++)
- dis[i] = 1e9;
- dis[1] = 0;
- for(int i=1;i<n;i++)
- for(int j=1;j<=m;j++)
- dis[edges[i].v] = min(dis[edges[i].v],dis[edges[i].u] + edges[i].w);
- for(int i=1;i<=m;i++){
- if(dis[edges[i].u] + edges[i].w < dis[edges[i].v]){
- printf("Negative Weight Cycle Detected!\n");
- return 0;
- }
- }
- for(int i=1;i<=n;i++)
- printf("Distance from 1 to %d is %d\n",i,dis[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment