JR北海道しりとり合戦は100駅以上行けるみたい

にて紹介されているけど、その気になれば
(1) あいの里教育大(あいのさときょういくだい) → (2) 伊香牛(いかうし) → (3) 汐見(しおみ) → (4) 三川(みかわ) → (5) 鷲ノ巣(わしのす) → (6) 砂川(すながわ) → (7) 鷲別(わしべつ) → (8) 月ヶ岡(つきがおか) → (9) 掛澗(かかりま) → (10) 幕別(まくべつ) → (11) 鶴沼(つるぬま) → (12) 増毛(ましけ) → (13) 剣淵(けんぶち) → (14) 近文(ちかぶみ) → (15) 御崎(みさき) → (16) 桔梗(ききょう) → (17) 植苗(うえなえ) → (18) 江差(えさし) → (19) 塩谷(しおや) → (20) 八雲(やくも) → (21) 藻琴(もこと) → (22) 遠浅(とあさ) → (23) 佐久(さく) → (24) 栗丘(くりおか) → (25) 神楽岡(かぐらおか) → (26) 桂岡(かつらおか) → (27) 桂川(かつらがわ) → (28) 稚内(わっかない) → (29) 生田原(いくたはら) → (30) 蘭越(らんこし) → (31) 鹿討(しかうち) → (32) 千歳(ちとせ) → (33) 瀬越(せごし) → (34) 鹿ノ谷(しかのたに) → (35) 仁木(にき) → (36) 木古内(きこない) → (37) 幾寅(いくとら) → (38) 蘭島(らんしま) → (39) 摩周(ましゅう) → (40) 歌内(うたない) → (41) 生野(いくの) → (42) 野田生(のだおい) → (43) 石狩金沢(いしかりかなざわ) → (44) 和寒(わっさむ) → (45) 鵡川(むかわ) → (46) 輪西(わにし) → (47) 静内(しずない) → (48) 石狩月形(いしかりつきがた) → (49) 大成(たいせい) → (50) 石狩沼田(いしかりぬまた) → (51) 太平(たいへい) → (52) 石狩太美(いしかりふとみ) → (53) 瑞穂(みずほ) → (54) 蓬栄(ほうえい) → (55) 石倉(いしくら) → (56) 蘭留(らんる) → (57) 留萌(るもい) → (58) 石谷(いしや) → (59) 安牛(やすうし) → (60) 島ノ下(しまのした) → (61) 高砂(たかさご) → (62) 五十石(ごじっこく) → (63) 栗沢(くりさわ) → (64) 蕨岱(わらびたい) → (65) 磯分内(いそぶんない) → (66) 糸井(いとい) → (67) 稲穂(いなほ) → (68) 星置(ほしおき) → (69) 北剣淵(きたけんぶち) → (70) 銚子口(ちょうしぐち) → (71) 千代ヶ岡(ちよがおか) → (72) 金華(かねはな) → (73) 中小屋(なかごや) → (74) 安国(やすくに) → (75) 錦岡(にしきおか) → (76) 釜谷(かまや) → (77) 山越(やまこし) → (78) 下白滝(しもしらたき) → (79) 北舟岡(きたふなおか) → (80) 上白滝(かみしらたき) → (81) 北見(きたみ) → (82) 緑が丘(みどりがおか) → (83) 上ノ国(かみのくに) → (84) 西北見(にしきたみ) → (85) 宮越(みやこし) → (86) 白石(しろいし) → (87) 新琴似(しんことに) → (88) 西様似(にしさまに) → (89) ニセコ(にせこ) → (90) 琴似(ことに) → (91) 西瑞穂(にしみずほ) → (92) ほしみ(ほしみ) → (93) 南美深(みなみびふか) → (94) 川端(かわばた) → (95) 滝ノ上(たきのうえ) → (96) 絵笛(えふえ) → (97) 遠軽(えんがる) → (98) 留辺蘂(るべしべ) → (99) 別当賀(べっとが) → (100) 学田(がくでん)
の順に100駅行けるんだけど、所詮は机上の空論で行程をまったく考慮していないので下記の地図上の線を見ていただくと分かるとおりこの順に行くには青春18きっぷでも持ってない限り行くのはものすごく面倒くさいという罠があるのでした。
ルール上では行く分には順不同で写真をしりとり順で送信すればいいようですが、そのあたりの最適化はよそ者であるところの自分には面倒なので皆様への課題とさせていただきます。(自分の仕事のプログラムがはかどってないという余談もあるんだけどね。)
以下はアルゴリズムもへったくれもなく力技で上記の解を求めた方法の解説です。

より大きな地図で JR北海道駅でしりとり100連発 を表示
駅名一覧[北海道]から

駅名 よみ

という形式でタブ区切りとLF改行を行った一覧をhs2.txtというテキストファイルに書き出し、

#!/usr/bin/perl
# 漢字の判別用
use strict;
use warnings;
use utf8;
use Encode;
open I, "hs2.txt"; #, '<:encoding(utf-8)'
my @names=();
my @kanas=();
my @lists=();
my @arr=();
my $maxlen=1;
my $len=1;
my $i;
my $j;
sub addnext() {
  my ($lastkana, $sent)=@_;
  my $i, $j;
  my $bfound;

  for($i=0;$i<@names;$i++) {
    # 既出をチェックしない
    $bfound=0;
    for($j=0;$j<@lists;$j++) {
      if ($i== $lists[$j]){
       $bfound = 1;
       #last;
      }
    }
    if($bfound == 0) {
      if (substr($kanas[$i], 0, 1) eq $lastkana ){
         push(@lists, $i);
         &addnext(substr($kanas[$i], length($kanas[$i])-1, 1), $i);
         #last;
      }
    }
  }

  if (@lists>2 && $maxlen<@lists) {
    $maxlen=@lists;
    print O $maxlen .")";
    for($j=0;$j<@lists;$j++) {
      print O $names[$lists[$j]] . " → ";
    }
    print O "\n";
    for($j=0;$j<@lists;$j++) {
      print O $kanas[$lists[$j]] . " → ";
    }
    print O "\n";
  }
  pop(@lists);
}
while(<I>){
  chomp;
  @arr=split(/\t/,Encode::decode_utf8($_));
  push(@names, $arr[0]);
  push(@kanas, $arr[1]);
}
close I;

# do first
open O, "> out.txt";
$maxlen=1;
for($i=0;$i<@names;$i++) {
  undef @lists;
  push(@lists, $i);
  &addnext(substr($kanas[$i], length($kanas[$i])-1, 1), $i);

}
close O;

というソースで解析しました。再帰が深すぎるとのことと自分の気が短いのとでとりあえずの最長が100駅まででしたが、語尾の濁点および半濁点を無視するルールも勘案するともう少し長くつなげられるのではないかと思っています。
kmlに起こした際の緯度経度情報は駅データ.jpで配布されているものを利用させていただきました。