結果
| 問題 | No.583 鉄道同好会 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-08-26 21:53:23 |
| 言語 | PyPy2 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 203 ms / 2,000 ms |
| コード長 | 1,110 bytes |
| 記録 | |
| コンパイル時間 | 251 ms |
| コンパイル使用メモリ | 77,688 KB |
| 最終ジャッジ日時 | 2025-12-04 01:20:40 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 |
ソースコード
n,m = map(int,raw_input().split())
class UnionFind():
def __init__(self,size):
self.table = [-1 for _ in range(size)]
def find(self,x):
while self.table[x] >= 0:
x = self.table[x]
return x
def union(self,x,y):
s1 = self.find(x)
s2 = self.find(y)
if s1 != s2:
if self.table[s1] != self.table[s2]:
if self.table[s1] < self.table[s2]:
self.table[s2] = s1
else:
self.table[s1] = s2
else:
self.table[s1] += -1
self.table[s2] = s1
return
degree = [0 for i in range(n)]
uf = UnionFind(n)
for i in range(m):
f,t = map(int,raw_input().split())
degree[f] += 1; degree[t] += 1
uf.union(f,t)
a = -1
for i in range(n):
if degree[i] > 0:
a = i
break
a = uf.find(a)
count = 0
for i in range(n):
if degree[i] != 0 and uf.find(i) == a:
if degree[i] % 2 == 1:
count += 1
elif degree[i] == 0:
continue
else:
print 'NO'
quit()
if count == 0 or count == 2:
print 'YES'
else :
print 'NO'