Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream f("date.in");
- int n,a[101][101],p[101],s[101],x=0,y,k,sol[101],r;
- void citire()
- {
- int i,j;
- f>>n;
- while(f>>i>>j)a[i][j]=1;
- //for(i=1;i<=n;i++){for(j=1;j<=n;j++)cout<<a[i][j]<<' ';cout<<endl;}
- }
- void afisare()
- {
- int i,j;
- for(i=1;i<=n;i++){for(j=1;j<=n;j++)cout<<a[i][j]<<' ';cout<<endl;}
- cout<<endl<<endl;
- }
- void drum()
- {
- int i,j,k;
- for(k=1;k<=n;k++)
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- if(a[i][j]==0)a[i][j]=a[i][k]*a[k][j];
- }
- void init()
- {
- int i;
- for(i=1;i<=n;i++)
- {
- s[i]=0;
- p[i]=0;
- k=0;
- sol[i]=0;
- }
- x=0;y=0;r=0;
- }
- void afisares()
- {
- int i;
- for(i=1;i<=x;i++)cout<<s[i]<<' ';
- cout<<endl;
- }
- void afisarep()
- {
- int i;
- for(i=1;i<=y;i++)cout<<p[i]<<' ';
- cout<<endl;
- }
- void succesor(int k)
- {
- int i,j;
- for(j=1;j<=n;j++)
- if(a[k][j]!=0)
- {
- x++;
- s[x]=j;
- }
- }
- void predecesor(int k)
- {
- int i,j;
- for(i=1;i<=n;i++)
- if(a[i][k]!=0)
- {
- y++;
- p[y]=i;
- }
- }
- void schimbare1(int k)
- {
- int i,j,r=0;
- for(i=1;i<=x;i++)
- for(j=1;j<=y;j++)
- if(s[i]==p[j])
- {
- r++;
- sol[r]=s[i];
- }
- cout<<k<<": ";
- for(i=1;i<=r;i++)if(sol[i]!=0)cout<<sol[i]<<' ';
- cout<<endl;
- }
- void reuniune(int k)
- {
- int i,j=0,gata=0;i=1;
- while(i<=r&&gata==0)
- {
- if(sol[i]==i)
- gata=1;
- i++;
- }j=0;
- if(gata==0)
- while(i<=r&&j==0)if(sol[i]==0)
- {
- sol[i]=k;j=1;
- }
- }
- void rezolvare()
- {
- int i,j;
- for(i=1;i<=n;i++)
- {
- init();
- succesor(i);
- predecesor(i);
- schimbare1(i);
- reuniune(i);
- //schimbare2();
- }
- }
- int main()
- {
- int i,j;
- citire();
- drum();
- afisare();
- rezolvare();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement