1 solutions
-
0
#include <iostream> #include <iomanip> #include <string> #include <algorithm> #include <cmath> #include <string> #include <list> #include <map> #include <set> #include <queue> #include <vector> #include <stack> using namespace std; struct Node{ int ch[205]; }nod[205]; int node[105]; int b[1005],a[105][105]; int maxx=-1e9,max_i; int cnt=0; int main(){ int n,m,root; int x,y,j=1,i=1,flag=0; cin>>n>>m; while(m--) { cin>>x>>y; if(i==1)//给的树是按照层级给的 所以第一个输入进去的是根 root=x; b[x]++;//下标法。x的儿子数量增加 if(b[x]>maxx)//求到儿子最多的节点 { maxx=b[x]; max_i=x; } if(x==flag)//如果父亲还是同一个 { j++; a[x][j]=y; } else { j=1; a[x][j]=y; } //其实也可以直接用二维vector存... flag=x;//flag存上一个父节点的序号 i++; } cout<<root<<endl; cout<<max_i<<endl; for(int i=1;i<=maxx;i++) { cout<<a[max_i][i]<<' '; } return 0; }
Information
- ID
- 6852
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 3
- Accepted
- 2
- Uploaded By