样例对的,但是0分

P1395 会议

@[Coast233](/user/539726) 我觉得 1. 这是无向图。 2. 递归爆栈了???
by Adchory @ 2023-01-07 19:58:54


@[初雪_matt](/user/360083) 万分感谢,我改对了。当时我是把坐标小做爸爸,所以没有标记,忘了```cpp 1-3 2-3 ``` 的情况。
by Xeffry @ 2023-01-07 20:00:14


@[Coast233](/user/539726) 没事
by 初雪_matt @ 2023-01-07 20:00:51


@[Reimu_Hakurei](/user/590600) 没有爆,我当时觉得1和3有路 就可以记为1是3的根,但是我没有想到如果又有2和3,那么就只有2通向3的路,没有3通向2的路。我是想得优化成单向图。这是我改了以后的代码```cpp #include<bits/stdc++.h> using namespace std; struct vla{ vector<int>next; int son,ans; }pop[50003]; int n,ans=INT_MAX,ansx=1,bok[50003],book[50003]; void dfs(int x,int dep){ bok[x]=1; pop[x].ans=dep; pop[x].son=1; for(int i=0;i<pop[x].next.size();i++){ if(!bok[pop[x].next[i]]){ dfs(pop[x].next[i],dep+1); pop[x].ans+=pop[pop[x].next[i]].ans; pop[x].son+=pop[pop[x].next[i]].son; } } } void dff(int x,int last){ book[x]=1; if(x!=1){ last+=n-2*pop[x].son; pop[x].ans=last; } for(int i=0;i<pop[x].next.size();i++){ if(!book[pop[x].next[i]]){ dff(pop[x].next[i],last); } } } int main(){ cin>>n; for(int i=1;i<n;i++){ int x,y; cin>>x>>y; pop[x].next.push_back(y); pop[y].next.push_back(x); } dfs(1,0); dff(1,pop[1].ans); for(int i=1;i<=n;i++){ if(ans>pop[i].ans){ ans=pop[i].ans; ansx=i; } } cout<<ansx<<" "<<ans; return 0; } ```
by Xeffry @ 2023-01-07 20:06:40


```cpp #include<bits/stdc++.h> using namespace std; struct vla{ vector<int>next; int son,ans; }pop[50003]; int n,ans=INT_MAX,ansx=1,bok[50003],book[50003]; void dfs(int x,int dep){ bok[x]=1; pop[x].ans=dep; pop[x].son=1; for(int i=0;i<pop[x].next.size();i++){ if(!bok[pop[x].next[i]]){ dfs(pop[x].next[i],dep+1); pop[x].ans+=pop[pop[x].next[i]].ans; pop[x].son+=pop[pop[x].next[i]].son; } } } void dff(int x,int last){ book[x]=1; if(x!=1){ last+=n-2*pop[x].son; pop[x].ans=last; } for(int i=0;i<pop[x].next.size();i++){ if(!book[pop[x].next[i]]){ dff(pop[x].next[i],last); } } } int main(){ cin>>n; for(int i=1;i<n;i++){ int x,y; cin>>x>>y; pop[x].next.push_back(y); pop[y].next.push_back(x); } dfs(1,0); dff(1,pop[1].ans); for(int i=1;i<=n;i++){ if(ans>pop[i].ans){ ans=pop[i].ans; ansx=i; } } cout<<ansx<<" "<<ans; return 0; } ```
by Xeffry @ 2023-01-07 20:07:10


|