We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
packagemainimport("bufio""fmt""io""os""strconv""strings")constINF=int32(1000000000)constedgeWeight=int32(6)/* * Complete the 'bfs' function below. * * The function is expected to return an INTEGER_ARRAY. * The function accepts following parameters: * 1. INTEGER n * 2. INTEGER m * 3. 2D_INTEGER_ARRAY edges * 4. INTEGER s */funcbfs(nint32,mint32,edges[][]int32,sint32)[]int32{adjList:=edgeListToAdjList(n,edges)dist:=initDist(n)dist[s]=0varqueue[]int32queue=append(queue,s)forlen(queue)!=0{u:=queue[0]queue=queue[1:]for_,v:=rangeadjList[u]{ifdist[v]==INF{dist[v]=dist[u]+1queue=append(queue,v)}}}varresult[]int32fori:=int32(1);i<=n;i++{ifi==s{continue}ifdist[i]==INF{result=append(result,-1)continue}result=append(result,dist[i]*edgeWeight)}returnresult}funcinitDist(Vint32)[]int32{dist:=make([]int32,V+1)fori:=int32(1);i<=V;i++{dist[i]=INF}returndist}funcedgeListToAdjList(Vint32,edgeList[][]int32)[][]int32{adjList:=make([][]int32,V+1)for_,edge:=rangeedgeList{u:=edge[0]v:=edge[1]adjList[u]=append(adjList[u],v)adjList[v]=append(adjList[v],u)}returnadjList}funcmain(){reader:=bufio.NewReaderSize(os.Stdin,16*1024*1024)stdout,err:=os.Create(os.Getenv("OUTPUT_PATH"))checkError(err)deferstdout.Close()writer:=bufio.NewWriterSize(stdout,16*1024*1024)qTemp,err:=strconv.ParseInt(strings.TrimSpace(readLine(reader)),10,64)checkError(err)q:=int32(qTemp)forqItr:=0;qItr<int(q);qItr++{firstMultipleInput:=strings.Split(strings.TrimSpace(readLine(reader))," ")nTemp,err:=strconv.ParseInt(firstMultipleInput[0],10,64)checkError(err)n:=int32(nTemp)mTemp,err:=strconv.ParseInt(firstMultipleInput[1],10,64)checkError(err)m:=int32(mTemp)varedges[][]int32fori:=0;i<int(m);i++{edgesRowTemp:=strings.Split(strings.TrimRight(readLine(reader)," \t\r\n")," ")varedgesRow[]int32for_,edgesRowItem:=rangeedgesRowTemp{edgesItemTemp,err:=strconv.ParseInt(edgesRowItem,10,64)checkError(err)edgesItem:=int32(edgesItemTemp)edgesRow=append(edgesRow,edgesItem)}iflen(edgesRow)!=2{panic("Bad input")}edges=append(edges,edgesRow)}sTemp,err:=strconv.ParseInt(strings.TrimSpace(readLine(reader)),10,64)checkError(err)s:=int32(sTemp)result:=bfs(n,m,edges,s)fori,resultItem:=rangeresult{fmt.Fprintf(writer,"%d",resultItem)ifi!=len(result)-1{fmt.Fprintf(writer," ")}}fmt.Fprintf(writer,"\n")}writer.Flush()}funcreadLine(reader*bufio.Reader)string{str,_,err:=reader.ReadLine()iferr==io.EOF{return""}returnstrings.TrimRight(string(str),"\r\n")}funccheckError(errerror){iferr!=nil{panic(err)}}
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Breadth First Search: Shortest Reach
You are viewing a single comment's thread. Return to all comments →
Golang solution