事前スキル:Tarjanは、強連結成分を求めて
ポイントを縮小。
名前が示唆するように、アルゴリズムは、グラフ理論のアルゴリズムの中でいくつかの点で点に縮小されます。
- アプリケーション
一見、私は理解しますが、これはそれが何であるかを使用しているのですか?
私たちは、多くの場合、最短経路を見つけることが、我々は最も長い道を尋ねますか?
標準的な質問が尋ねています:
あなたの有向グラフを付け、各ポイントは、ポイントの右(ではない右サイド、オハイオ州)を有しており、各点は何度でもを渡すことができますが、唯一のプラスは右の時間を指し、この絵最大重量を見つけます値
トピック分析:
私は、あなたが円の中にくるくると回しますが、ほとんどの人がライン上で最も短いテンプレートの変更を考えるだろうが、これは間違って行くだろうと信じて、これを参照してください。
初めまして。
私たちは、彼らのすべての点であれば強くコンポーネントを接続ポイントの山を構成することができるよう、私たちは、彼らがポイントに縮小することができ、この点は彼らの右のポイントと右の点で、それは側の側面である、わかります、エッジは、エッジすべての点です。
いくつかの写真を理解するのに役立ち置きます:
1.3.5図は、強連結成分であります
- どのように達成するために?
私たちは、配列tarjan強連結成分が呼び出されたときに開かれたcolor[](或其他名字)
強連結成分の数が属するポイントを記録します。私たちは各点を通って、それが同じと同じ強連結成分内に達するかどうかを確認し、そうでない場合を指すことができ、それらは強く接続されているコンポーネントの数は再びなど有向非巡回グラフ(構築依存しています私は)なぜ数字に頼る必要があります、と思いました
- コード
for(int i=1;i<=n;i++)
{
for(int j=0;j<ver[i].size();j++)
{
int x=ver[i][j];
if(color[i]!=color[x])
{
in[color[x]]++;
g[color[i]].push_back(color[x]);
}
}
}
for(int i=1;i<=n;i++)
ww[color[i]]+=w[i];//点权处理
私たちは、還元ポイントを達成するように。
- トピック: