All pastes #24048 Raw Edit

Miscellany

public text v1 · immutable
#24048 ·published 2005-09-27 19:03 UTC
rendered paste body
from sys import stdin
from decimal import *

def main():

	getcontext().rounding = ROUND_HALF_UP # 0.5 rundes til 1
	n = int(stdin.readline())
	nabomatrise = [None] * n # rader
	tK = 0

	for i in xrange(0, n):
		nabomatrise[i] = [False] * n # kolonner
		linje = stdin.readline()
		for j in xrange(0, n):
			if linje[j] == '1':
				tK +=1
				nabomatrise[i][j] = True

	for startnoden in stdin:
		
		noder = n
		kanter = tK
		
		nodeIkkeBesokt = []
		nodeIkkeBesokt = [True] * n
		
		ko = []
		
		startnode = int(startnoden)
		ko.append(startnode)
		nodeIkkeBesokt[startnode] = False
		
		while(len(ko) > 0):
			
			node = ko.pop()
			noder -= 1
			
			for i in xrange(0,n):
				if nabomatrise[i][node]:
					kanter -=1
				if nabomatrise[node][i]:
					if nodeIkkeBesokt[i]:
						ko.append(i)
						nodeIkkeBesokt[i] = False
						
		if noder == 0:
			print "0.000"
		else:
			print (Decimal(kanter) / Decimal(noder**2)).quantize(Decimal('0.001'))

main()