@bublov

Как будет выглядеть этот код на питоне (исходный язык паскаль)?

Нашел код на паскале, но так как его не изучал ничего не понял. Помогите перевести код в питон 3, чтобы я хоть как-то смог разобраться.

var
  inp, outp: text;
  n, m, x, y, col, i, j: integer; 
  relations: array[1..100, 1..100] of integer;
  used: array[1..100] of boolean;
  ability: boolean;
  color: array[1..100] of integer;


procedure DFS(v: integer);
var
 j: integer;

begin
  used[v] := false;
  color[v] := col;
  col := col * (-1);
  for j := 1 to n do
    if (relations[v, j] <> 0) and used[j] then DFS(j);
end;



begin
  assign(inp, inpFileName);
  assign(outp, outpFileName);
  reset(inp);
  rewrite(outp);

  read(inp, n, m);

  for i := 1 to n do 
    for j := 1 to n do
      relations[i, j] := 0;

  for i := 1 to m do
  begin
    read(inp, x, y);
    relations[x, y] := 1;
    relations[y, x] := 1;
  end;

  for i := 1 to m do
    used[i] := true;

  col := 1;

  for i := 1 to n do
    color[i] := 0;

  DFS(x);

  ability := true;

  for i := 1 to n do
    for j := 1 to n do
      if (color[i] = color[j]) and (relations[i, j] <> 0) then ability := false;

  if ability then 
  begin
    writeln(outp, 'YES');  
    for i := 1 to n do
      if color[i] = 1 then writeln(outp, i);
  end
  else writeln(outp, 'NO');

  close(inp);
  close(outp);
end.
  • Вопрос задан
  • 1087 просмотров
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
Как то так:
import sys
global used,color,col,n,relations

def DFS(v):
	global used,color,col,n,relations
	used[v] = False
	color[v] = col
	col= col * (-1)
	for j in range(n):
		if relations[v][j] != 0 and used[j]: DFS(j)
def main(inpFileName,outpFileName):
	global used,color,col,n,relations
	with open(inpFileName,"r") as fp:
		inp = [int(i) for i in fp.read().split()]
	outp = open(outpFileName,"w")

	n, m = inp[0:2]
	relations = [ [0]*n for i in range(n)]
	for i in range(m):
		x,y = inp[2+i*2:2+(i+1)*2]
		relations[x][y] = 1
		relations[y][x] = 1
	used = [True]*m
	col = 1
	color = [0]*n
	DFS(x)
	ability = True
	for i in range(n):
		for j in range(n):
			if (color[i] == color[j]) and (relations[i][j] != 0): ability = False
	if ability : 
		outp.write('YES\r\n')
		for i in range(n):
			if color[i] == 1 : outp.write(str(i)+"\r\n")
	else:
		outp.write('NO\r\n')
	outp.close()
if __name__ == "__main__":
	if len(sys.argv) >= 3:
		main(sys.argv[1],sys.argv[2])
	else:
		print("Usage %s infile outfile"%sys.argv[0])


Я бы конечно переписал без голбалов, но мне лень.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы