Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #define NMAX 252
- int n;
- int v[NMAX][NMAX];
- inline void swap(int a, int b)
- {
- int aux;
- for(int j=1; j<=n; ++j)
- {
- aux=v[a][j];
- v[a][j]=v[b][j];
- v[b][j]=aux;
- }
- aux=v[a][n+1];
- v[a][n+1]=v[b][n+1];
- v[b][n+1]=aux;
- }
- inline void elim(int a, int b)
- {
- for(int j=1; j<=n; ++j)
- v[a][j]^=v[b][j];
- v[a][n+1]^=v[b][n+1];
- }
- bool Gauss()
- {
- int x;
- for(int i=1, j=1; i<=n; ++i, ++j)
- {
- x=i;
- while(!v[i][x])++x;
- if(x>n)
- return false;
- if(x!=i)
- swap(i, x);
- for(x=1; x<=n; ++x)
- if(v[x][j] && x!=i)
- elim(x, i);
- }
- return true;
- }
- int main()
- {
- freopen("date.in", "r", stdin);
- freopen("date.out", "w", stdout);
- int x;
- scanf("%d", &n);
- for(int i=1; i<=n; ++i)
- {
- while(true)
- {
- scanf("%d", &x);
- if(x==-1)
- break;
- v[i][x]=1;
- }
- v[i][n+1]=1;
- }
- if(Gauss())
- {
- for(int i=1; i<=n; ++i)
- if(v[i][n+1])
- printf("%d ", i);
- printf("\n");
- }
- else
- printf("No solution\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement