#include <bits/stdc++.h>
using namespace std;
int prime(int subject){
if(subject == 1){
return 0;
}
if(subject == 2){
return 1;
}
if(subject == 3){
return 1;
}
if(subject == 4){
return 0;
}
if(subject == 5){
return 1;
}
for(int i = 2; i <= (subject/2 + 1); i++){
if(subject % i == 0){
return 0;
}
}
return 1;
}
int factorial(int subject){
if(subject == 0){
return 1;
}
if(subject == 1){
return 1;
}
int answer = 1;;
for(int i = 1; i <= subject; i++){
answer = answer * i;
}
return answer;
}
int main(){
int n;
cin >> n;
int matrix[n + 1][n + 1];
for(int i = 0; i <= n; i++){
for(int j = 0; j <= n; j++){
matrix[i][j] = 191919;
}
}
for(int i = 1; i <= n; i++){
matrix[i][i] = 0;
}
for(int i = 1; i < n; i++){
int firstvar;
int secondvar;
cin >> firstvar;
cin >> secondvar;
matrix[firstvar][secondvar] = 1;
matrix[secondvar][firstvar] = 1;
}
float totalprime = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
if(i != j){
for(int k = 1; k <= n; k++){
if(k != i){
if(k != j){
matrix[i][j] = min((matrix[i][k] + matrix[k][j]), matrix[i][j]);
matrix[j][i] = matrix[i][j];
}
}
}
}
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
if(j != i){
if(prime(matrix[i][j]) == 1){
totalprime = totalprime + 1;
}
}
}
}
totalprime = totalprime/2;
float answer1 = factorial(n)/(2 * factorial(n - 2));
float answer_finale = totalprime/answer1;
cout << answer_finale;
return 0;
}
My Code is getting SIGFPE error. Please help me find answer.