締め切りはずいぶん先で(鬼が笑うが)2月17日(水)AM10:00
なので,この解答は 2月17日(水)AM10:01 の予約投稿とする。
Facebookなどで表示される「共通の友達」。
あなたの手元には、誰と誰が友達であるかを記したリストがあります。
このリストを元に、「共通の友達」の最大数を求めてください。
例えば、次のような友人関係の場合、共通の友達の最大数は3人になります。
1行目がこのリストに登場する友人番号の最大値、
2行目以降に友人関係がある場合に、そのペアを空白区切りでセットされています。
5
1 2
1 3
1 4
3 4
2 3
2 5
4 5
難易度が「星 4 つのうちの星 3 つ」となっているが,そんなに難しいか?
個人ごとに友達リストを作って,2 人ずつの組合せで共通の友人数を数え,その最大値を出力する(出題文まんまじゃないか)
func = function(fn) {
con = file(fn, "r")
n = as.integer(readLines(con, 1))
f = vector("list", n)
pair = readLines(con)
for (i in seq_along(pair)) {
p = as.integer(unlist(strsplit(pair[i], " ")))
p1 = p[1]
p2 = p[2]
f[[p1]] = append(f[[p1]], p2)
f[[p2]] = append(f[[p2]], p1)
}
n.max = 0
for (i in 1:(n-1)) {
for (j in (i+1):n) {
n.max = max(n.max, length(intersect(f[[i]], f[[j]])))
}
}
cat(n.max)
}
func("test-data1.R")
func("test-data2.R")
func("test-data3.R")