問題:ノード数(n)、エッジ数(m)、およびノード間のエッジを持つ無向グラフが与えられます。std::mapを使用してツリーかどうかを判断する必要があります。
入力は次のようになります: nm
次に、ノード間のエッジを表す m 行
だから私は次のことを試しました:
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int,int> Links;
int n,m,Parent,Child;
cin>>n>>m;
if(m!=n-1) //First Condition -> Number of Links=Number of Nodes-1 -> No loops && No Cuts
{
cout<<"NO"<<endl;
return 0;
}
while(m!=0)
{
m--;
cin>>Parent>>Child;
if(Links[Child]!=0)
{
if(Links[Parent]!=0) //No node has more than one parent
{
cout<<"NO"<<endl;
return 0;
}
Links[Parent]=Child;
}
else
Links[Child]=Parent;
}
cout<<"YES"<<endl;
return 0;
}
しかし、それは間違った答えを生成するだけで、その理由はわかりません(このオンライン裁判官の問題でテストしました SPOJの同様の問題)
助けていただければ幸いです、ありがとう。