AOJ 2503 Project Management

何のことはない、有効グラフつくってクリティカルパス求めるだけ。
ワーシャルフロイド法でもなんでも解けるんじゃないかな。

int n, m;
int cost[400][400];
 
int main(){
  scanf("%d%d", &n, &m);
  rep(i, n) rep(j, n) cost[i][j] = 0;
  int a, b, c;
  rep(i, m){
    scanf("%d%d%d", &a, &b, &c);
    cost[a][b]  = c;
  }
 
  rep(k, n) rep(i, n) rep(j, n)  if(cost[i][k] && cost[k][j])
    cost[i][j] = max(cost[i][j], cost[i][k] + cost[k][j]);
  
  printf("%d\n", cost[0][n-1]);
  return 0;
}
>||

こんな感じ?
三重ループの後の条件式がないと、ダメらしい。昔はまった、