데이터파일을한줄씩읽으면서

그래프를생성하고

앞서말한기준대로

이웃이많은노드순으로빨파녹


asd님이자바를고르셔서

저도자바로먼저짜봤어요


최대한자바답게짜보려고노력했읍니다

배열대신객체들을마니사용해봤읍니다


흐름은다음과같읍니다


1.메인에서그래프를만들고

2.데이터파일로채운다음에

3.색깔을칠해봅니다




데이터파일을읽어서그래프를생성하는부분입니다


Graph(g)는Vertex들로구성되구요Edge는따로클래스를만들지않았읍니다왜냐면별로의미가없어서요

makeEdge가하는일은주어진두노드를서로이웃맺어주는겁니다각Vertex의이웃목록에서로등록합니다


아래처럼Graph를구성했읍니다Edge가없으니그냥노드들만


HashTable을사용한이유는MakeVertex에서이름으로중복을걸러주기위해섭니다Vertex를만들지않고그냥씹어줍니다



MakeEdge가실행될때에는src/dst두Vertex가이미만들어져있기때문에

꺼내다가부킹만시켜주면되겠읍니다당근셀프부킹은당근금지가됩니다




아래처럼Vertex를구성했읍니다



이웃목록에HashSet을이용한이유는두가진데요

1.Set이기때문에같은노드가여러번등록안되구요

2.Hash이기때문에같는넘이있는지확인이빨라요



HashSet이이웃노드의중복성을조용하게보장해주니까

createEdge부분이한줄로끝났읍니다CompareTo에서

이웃들의수를기준으로우열을가리게처리해주었읍니다


이제이프로그램의핵심부분입니다


노드들을PQ에때려넣고한놈씩꺼내서색깔을칠합니다.



PQ를사용한이유는당근Vertex들을이웃의수대로정렬해서처리하기위함이지요

colourVertex가실패하면빨리접읍니다일전에말했듯이안되는건안되는거입니다


아래는색칠하는부분입니다빨파녹우선순위를지켜서색깔을선택합니다


Colour클래스는이렇게간단합니다




그럼다음엔지나가는윾동님이고르신c++로짠걸올리겠읍니다