1 条题解

  • 0
    @ 2025-4-14 18:45:31

    C++ :

    #include<iostream>
    #include<set>
    using namespace std;
    int main(){
        int n,m;    cin>>n>>m;
        int father[n+1];  //存父亲下标的数组   双亲表示法
        set<int> CH[n+1]; //为每个节点开一个set   存储它的孩子
    	for(int i=1;i<=n;i++) father[i]=-1;
    	int x,y;
    	for(int i=0;i<m;i++)
    	{
    		cin>>x>>y;
    		father[y]=x;
    		CH[x].insert(y);
    	}
    	for(int i=1;i<=n;i++)
    		if(father[i]==-1) cout<<i<<endl;
        int max=0;
    	for(int i=1;i<=n;i++)   //扫描一次,统计最大值
            if(CH[i].size()>max) max=CH[i].size();
    
        for(int i=1;i<=n;i++)
        if(CH[i].size()==max){
            cout<<i<<endl;
            set<int>::iterator it;
            for(it=CH[i].begin();it!=CH[i].end();it++)
                cout<<*it<<' ';
            cout<<endl;
        }
    	    //cout<<i<<':'<<CH[i].size()<<endl;
        return 0;
    }
    
    

    Pascal :

    program qi26791;
    type
     treetype=record
      father:longint;
      num:longint;
      child:array[1..100]of longint;
     end;
    var
     tree:array[1..100]of treetype;
     n,m:longint;
    procedure  du;
    var
     i,j,k,x,y:longint;
    begin
     read(n,m);
     for i:= 1 to m do
      begin
       read(x,y);
       tree[y].father:=x;
       inc(tree[x].num);
       tree[x].child[tree[x].num]:=y;
      end;
    end;
    function root:longint;
    var
     i:longint;
    begin
     for i:= 1 to n do
      if tree[i].father=0 then
       begin
        root:=i;
        exit;
       end;
    end;
    function find:longint;
    var
     max,k,i,j:longint;
    begin
     max:=0; k:=0;
     for i:= 1 to n do
       if tree[i].num>max then
        begin
         k:=i; max:=tree[i].num;
        end;
       writeln(k);
      for i:= 1 to max-1 do write(tree[k].child[i],' ');
      writeln(tree[k].child[max]);
      for i:= 1 to n do
       if (tree[i].num=max)and(i<>k) then
        begin
         writeln(i);
         for j:= 1 to max-1 do write(tree[i].child[j],' ');
         writeln(tree[i].child[max]);
        end;
    end;
    begin
     du;
     writeln(root);
     find;
    end.
    
    • 1

    信息

    ID
    3525
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者