The Largest Generation(DFS)

来源:互联网 发布:横道图 软件 编辑:程序博客网 时间:2024/06/16 15:03
#include <iostream>#include <vector>#define SIZE 10using namespace std;void DFS(vector<vector<int>> &arr ,int arr2[] ,int  w,int  *g,int  *p,int  k);int main(){    int n1 ,n2;    cin>>n1>>n2;    vector<vector<int>> arr;    //将输入存入容器    for(int i=0;i<n2;i++)    {        vector<int> tmp;        int j ,w;        int k;        cin>>j>>w;        tmp.push_back(j);        tmp.push_back(w);        while(w--)        {            cin>>k;            tmp.push_back(k);        }        arr.push_back(tmp);    }    int g=0;//表示第几代人    int p=0;//表示某代人的人数    int k=2;//从第二代开始    int arr2[SIZE]={0};//记录每一代人的总数(我猜最多十代人)    DFS(arr,arr2,1,&g,&p,k);    cout<<p<<" "<<g<<endl;    return 0;}void DFS(vector<vector<int>> &arr ,int arr2[] ,int  w,int  *g,int  *p,int  k)//w:将要访问的父亲结点{    vector<int> tmp;    for(int i=0;i<arr.size();i++)    {        if(arr[i][0]==w)//找到需要访问的vector对象        {            tmp=arr[i];            arr2[k]+=tmp[1];            if(arr2[k]>*p)//更新g和p            {                *p=arr2[k];                *g=k;            }            break;        }    }    for(int i=2;i<tmp.size();i++)    {        DFS(arr,arr2,tmp[i],g,p,k+1);    }    return ;}

原创粉丝点击