私は汎ヘレニック競争の 3 つのフェーズの 1 つ目を解決しました (現在は終了しています)。しかし、より単純な複雑さのアルゴリズムがあるかどうかを知りたいです 7 9
5 7
4 2
3 6
2 3
1 7
6 2
4 6
1 5
3 4
int main()
{
ifstream in("domes.in");
ofstream out("domes.out");
int orio,z;
in>>orio;
in>>z;
int domes[orio];
for(int i=0;i<orio;i++){domes[i]=0;}
int k;
for(int i=0;i<2*z;i++)
{
in>>k;
domes[k-1]++;
}
int c=0;
for(int i=0;i<orio;i++)
{
if(domes[i]<2)
c++;
}
out<<c;
return 0;
}
最初の 2 つの数字は、場所の数 (orio) と一致した数 (z) です。場所はなんとなく(無意味に)「つながっている」。接続数が 2 未満の場所の数を調べる必要があります。出力 (この場合は c) は、接続数が 2 未満の場所の数です。k は、各数値を挿入するために一時的に使用される変数であり、「見られた」回数を加算します。見えているということは、別の場所につながっているということです。もっと簡単な解決策はないと思いますが、同僚のプログラムのいくつかは実行に時間がかからず、それが私を悩ませました