| 
    
     |  | 以下に示すような系統図があり、それぞれ路線(root*)は延長、面積を持っています。 
 rootA--rootB-+rootD-+rootH-+rootK(out)
 |   |   |
 rootC-+   |   |
 rootE--rootF--rootG-+   |
 |
 rootI--rootJ-+
 データは、以下のように整理しました。
 路線名 接続先 延長 面積
 rootA  rootB  120  10
 rootB  rootD  50  20
 rootD  rootH  110  50
 rootH  rootK  30  30
 rootC  rootD  60  20
 rootE  rootF  100  40
 rootF  rootG  90  70
 rootG  rootH  70 100
 rootI  rootJ  80  80
 rootJ  rootK  20  60
 rootK      10  70
 <これまで行ったこと>
 これらの路線名、接続先を読み込み接続先のループ内に路線名のループを回し
 全データ比較してヒットしなかった場合、起点路線であることまでは検出できました。路線名(Rname),接続先(Oneme)、起点路線(Rst)とすると以下のコードで
 起点路線まで見つけることができました。
 for i= i to Ndat
 for j= i to Ndat
 if(Oname(i)=Rname(j))then
 exit for
 elseif(j=Ndat)then
 icnt=icnt+1
 Rstr(icnt)=Rname(i)
 endif
 next j
 next i
 <したいこと>
 起点路線から延長、面積を合計し、延長は合流点で上流側の長い延長に自分の延長を加えるようにする。
 
 <質問>
 接続先のループを回して同じものを集計すれば面積は計算できそうですが、先に起点から合流点まの階層数を調べなければ合計ができそうもないので行き詰まってしまいました。
 どなたか、よい考え方があればご教授願います。
 
 <結果の例>
 路線名 延長 面積
 rootA  120  1
 rootB  170  3
 
 rootC   60  2
 rootD  280 10
 
 rootE  100  4
 rootF  190 11
 rootG  260 21
 rootH  310 34
 
 rootI   80  8
 rootJ  100 14
 rootK  320 55
 
 
 |  |