寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #GRL_4_A : Cycle Detection for a Directed Graph

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題 "Cycle Detection for a Directed Graph"
https://onlinejudge.u-aizu.ac.jp/problems/GRL_4_A
・有向グラフの閉路検査

僕が作成、提出したコードは、以下のとおりです。

Aizu Online Judge in C++ #GRL_4_A : Cycle Detection for a Directed Graph
/*
Aizu Online Judge in C++ #GRL_4_A : Cycle Detection for a Directed Graph
https://onlinejudge.u-aizu.ac.jp/problems/GRL_4_A
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
struct st{
    int from,to,c;
};
vector<st> vec;
int d[1000];
int main(void){
    int v,e;
    cin>>v>>e;
    for(int i=0;i<e;i++){
        int s,t;
        cin>>s>>t;
        vec.push_back({s,t,-1});
    }
    for(int i=0;i<v;i++){
        for(int j=0;j<e;j++){
            st s=vec[j];
            if(d[s.from]!=inf && d[s.to]>d[s.from]+s.c){
                d[s.to]=d[s.from]+s.c;
                if(i==v-1){
                    cout<<1<<endl;
                    return 0;
                }
            }
        }
    }
    cout<<0<<endl;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/