Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream f("da.txt");
- int a[100][100],n,m,x,y,z,pinf=150,da[100],nu[200],o;
- void citire()
- {f>>n>>m;
- for(int i=1;i<=n;i++)
- for(int j=1;j<=n;j++)
- if(i==j)
- a[i][j]=0;
- else
- a[i][j]=pinf;
- for(int i=1;i<=m;i++)
- {f>>x>>y>>z;
- a[x][y]=z;
- }
- }
- void afisare()
- {for(int i=1;i<=n;i++)
- {for(int j=1;j<=n;j++)
- if(a[i][j]==pinf)
- cout<<"pinf"<<" ";
- else
- cout<<a[i][j]<<" ";
- cout<<endl;
- }
- }
- void rf()
- {for(int k=1;k<=n;k++)
- for(int i=1;i<=n;i++)
- for(int j=1;j<=n;j++)
- if(a[i][j]>a[i][k]+a[k][j])
- a[i][j]=a[i][k]+a[k][j];
- }
- void descompunere(int i, int j)
- {int g=0;
- int k=1;
- while(k<=n&& !g)
- {if(i!=k&& j!=k)
- if(a[i][j]==a[i][k]+a[k][j])
- {descompunere(i,k);
- descompunere(k,j);
- g=1;}
- k++;}
- if(!g)
- {cout<<j<<" ";
- da[o++]=j;}
- }
- void scriu(int nodin,int nodfin)
- {if(a[nodin][nodfin]<pinf)
- {cout<<"drumul dintre "<<nodin<<" si "<<nodfin<<" are lungimea "<<a[nodin][nodfin]<<endl;
- cout<<"drumul este ";
- cout<<nodin<<" ";
- descompunere(nodin,nodfin);}
- else
- cout<<"nu exista drum intre cele 2";
- }
- void daa()
- {for(int i=1;i<=n;i++)
- {da[i]=0;
- }
- }
- int main()
- {citire();
- afisare();
- rf();
- int unu,doi,trei,patru,h=0;
- cout<<endl;
- cin>>unu>>doi;
- cin>>trei>>patru;
- scriu(unu,doi);
- cout<<endl;
- for(int i=1;i<=o+1;i++)
- {nu[i]=da[i];
- h++;}
- daa();
- scriu(trei,patru);
- cout<<endl;
- cout<<"Nodurile comune prin care trec sunt ";
- for(int i=1;i<=o+1;i++)
- {for(int j=1;j<=h;j++)
- if(nu[j]==da[i] && nu[j]>0)
- cout<<nu[j]<<" ";}
- cout<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement