Polish version    English version  
  Historia OI -> V OI 1997/1998 -> Zadania


 Aktualności
 O olimpiadzie
 Komitety
 XVIII OI 2010/2011
 Historia OI
XVII OI 2009/2010
XVI OI 2008/2009
XV OI 2007/2008
XIV OI 2006/2007
XIII OI 2005/2006
XII OI 2004/2005
XI OI 2003/2004
X OI 2002/2003
IX OI 2001/2002
VIII OI 2000/2001
VII OI 1999/2000
VI OI 1998/1999
V OI 1997/1998
Wyniki III etapu
Wyniki II etapu
Wyniki I etapu
Zadania
Regulamin
Terminarz
Statystyki
IV OI 1996/1997
III OI 1995/1996
II OI 1994/1995
I OI 1993/1994
 Książeczki OI
 Reprezentacja
 Obozy Olimpiady
 Galeria zdjęć
 Ciekawe odsyłacze
 OIG LiveCD
 IV OIG 2009/2010
 Historia OIG
 SIO
 MAIN
V Olimpiada Informatyczna 1997/98

Zadanie: SIE
Autor: Piotr Chrząstowski-Wachtel
Sieć dróg

II ETAP, SESJA PRÓBNA - CZWARTEK 12 LUTEGO 1998 r.  
Plik źródłowy: SIE.??? (np. pas, c, cpp)
Plik wykonywalny: SIE.exe
Plik wejściowy: SIE.in
Plik wyjściowy: SIE.out

Do mapy drogowej dołączona została dyskietka z tabelą długości najkrótszych dróg (odległości) między każdymi dwoma miastami na mapie. Wszystkie drogi są dwukierunkowe. Położenie miast na mapie ma następującą ciekawą własność. Jeżeli długość najkrótszej drogi z miasta A do B jest równa sumie długości najkrótszych dróg z A do C i z C do B, to miasto C leży na (pewnej) najkrótszej drodze z A do B. Powiemy, że dwa miasta A i B sąsiadują ze sobą, jeżeli nie istnieje miasto C takie, że długość najkrótszej drogi z miasta A do B jest równa długości najkrótszych dróg z A do C i z C do B. Na podstawie danej tabeli odległości znajdź wszystkie pary miast sąsiadujących ze sobą.

Przykład

Jeżeli tabela odległości ma postać
  A B C
A 0 1 2
B 1 0 3
C 2 0 3
wówczas sąsiednimi miastami są A i B oraz A i C.

Zadanie

Napisz program, który:

  • wczytuje z pliku tekstowego SIE.IN tabele odległości;
  • znajduje wszystkie pary sąsiednich miast;
  • zapisuje wynik w pliku tekstowym SIE.OUT.

Wejście

W pierwszym wierszu pliku wejściowego SIE.IN znajduje się liczba całkowita n, 1<=n<200. Jest to liczba miast na mapie. Miasta ponumerowane są jednoznacznie od 1 do n.
Tabela odległości jest zapisana w kolejnych n wierszach pliku SIE.IN. W wierszu i+1, 1 <=i<=n, pliku SIE.IN jest zapisanych n nieujemnych liczb całkowitych nie wiekszych od 200, oddzielonych pojedynczym odstępem. Liczba j-ta jest odległości między miastami i oraz j.

Wyjście

Twój program powinien wypisać w pliku wyjściowym SIE.OUT wszystkie pary (numerów) sąsiednich miast, po jednej parze w każdym wierszu. Każda para powinna pojawia się tylko raz. Liczby w parze powinny być uporządkowane rosnąco i oddzielone pojedynczym odstępem. Kolejność wypisywania par powinna być taka, że dla pary (a,b) poprzedzającej parę (c,d), a < c lub (a=c i b < d).

Przykład

Dla pliku tekstowego SIE.IN:

3
0 1 2
1 0 3
2 3 0

poprawnym rozwiązaniem jest plik wyjściowy SIE.OUT:

1 2
1 3





Wersja do druku