package main import ("fmt" "math/rand" ) func goDegreeOfVertex(c chan int, v, n int,A [][] bool) { degree :=0 for i :=0;i < n; i++ {if A[v][i] {degree++} } c <- degree } func pCountEdge(n int,A [][] bool) (edges int) { c := make(chan int) for i:= 0; i < n; i++ {go goDegreeOfVertex(c,i,n,A) } edges = 0 for i := 0; i < n; i++ { edges += <- c } close(c) return edges/2 } func losuj(n int,A [][] bool) { A[n-1][n-1]=false for i := 0; i < n-1; i++ { A[i][i]=false; for j :=i+1; j < n; j++ { x := (rand.Float64() <= 0.5); //fmt.Printf("%d ",x); A[i][j] =x; A[j][i]=x } } } func pokaz(n int,A [][] bool) { for i := 0; i < n; i++ { for j := 0; j < n; j++ { fmt.Printf("%d ",A[i][j]); } fmt.Println() } } func main() { YSize :=5 XSize :=5 picture := make([][]bool, YSize) for i := range picture { picture[i] = make([]bool, XSize) } losuj(XSize,picture) pokaz(XSize,picture) fmt.Println("Ilosc krawedzi w grafie",pCountEdge(XSize,picture)) }