-2
這樣的DFS功能可按代碼片段: -我不理解的語法這DFS實現
void dfs(int u, int p)
{
if(p!=-1)d[u] = d[p]+1;
for(int i: v[u])
{
if(i==p)continue;
dfs(i, u);
}
}
我不理解這其中的DFS排在比賽的社論執行。完整的代碼是follows.it將是非常好的,如果有人可以幫助我理解這一段代碼
#include <bits/stdc++.h>
using namespace std;
#define int long long int
vector<int> d;
vector< vector<int> > v;
void dfs(int u, int p)
{
if(p!=-1)d[u] = d[p]+1;
for(int i: v[u])
{
if(i==p)continue;
dfs(i, u);
}
}
#undef int
int main()
{
#define int long long int
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
v.resize(n);
d.resize(n);
for(int i = 0;i<n-1;i++)
{
int x, y;
cin>>x>>y;
v[x-1].push_back(y-1);
v[y-1].push_back(x-1);
}
d[0] = 0;
dfs(0, -1);
int q;
cin>>q;
while(q--)
{
int x, y;
cin>>x>>y;
if((d[x-1]+d[y-1])&1)cout<<"Odd"<<endl;
else cout<<"Even"<<endl;
}
return 0;
}
代碼中寫的不好,沒有人真正應該使用快速黑客替換'](http://stackoverflow.com/questions/31816095/why-should-i-not-include-bits-stdc-h);命名錯誤的變量;沒有文件或評論。如果你想學習編程C++,那麼[閱讀好書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)或去學校。 –
for-loop
代碼學習材料。案例:用宏重新定義一種基本的內置類型; [包括'沒有什麼像重新定義關鍵字那樣激發你的代碼。接下來'#define double float' –
@Someprogrammerdude幾天前,我正在審查一些考試試卷,以便在我們的辦公室進行新一期招聘。我感到驚訝的是,每個人都包含'bits/stdC++。h'。我問了其他人,現在主要關注的是哪些書,我的一位年輕同事回答說'Code :: Blocks'自動生成這個。 – taskinoor