Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <cmath>
- using namespace std;
- ifstream f("arbori_in_graf.in");
- ofstream g("arbori_in_graf.out");
- const double EPS = 1E-9;
- double a[51][51],det;
- int n,m,x,y,grad[51],i,j,k;
- int main()
- {
- f>>n>>m;
- while(m--)
- {
- f>>x>>y;
- x--;
- y--;
- a[x][y]--;
- a[y][x]--;
- grad[x]++;
- grad[y]++;
- }
- for(i=0;i<n;i++)
- {
- a[i][i]=grad[i];
- }
- n--;
- det = 1;
- for (i=0; i<n; ++i) {
- k = i;
- for (j=i+1; j<n; ++j)
- if (abs (a[j][i]) > abs (a[k][i]))
- k = j;
- if (abs (a[k][i]) < EPS) {
- det = 0;
- break;
- }
- swap (a[i], a[k]);
- if (i != k)
- det = -det;
- det *= a[i][i];
- for (int j=i+1; j<n; ++j)
- a[i][j] /= a[i][i];
- for (j=0; j<n; ++j)
- if (j != i && abs (a[j][i]) > EPS)
- for (k=i+1; k<n; ++k)
- a[j][k] -= a[i][k] * a[j][i];
- }
- g << det;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement