1106. Lowest Price in Supply Chain(25)

来源:互联网 发布:重庆外包网络推广 编辑:程序博客网 时间:2024/06/10 19:25

题目见https://www.patest.cn/contests/pat-a-practise/1106

有点类似邻接表,只不过边表采用队列的形式,然后就是在遍历的过程中递归啦

代码如下:

#include <stdio.h>#include <stdlib.h>#include <math.h>#define N 100005typedef struct{    int front,rear;    int *q;}AdjList;AdjList aL[N];int n,lRetailer,lDeep=N;double p,r;void Read(){    int i,a;    scanf("%d%lf%lf",&n,&p,&r);    for(i=0;i<n;i++){        scanf("%d",&a);        aL[i].front = aL[i].rear = 0;        if(a){            aL[i].q = (int *)malloc(sizeof(int)*a);            while(a--){                scanf("%d",&(aL[i].q[aL[i].rear]));                aL[i].rear ++;            }        }    }}void Solve(int root, int deep){    int i;    int *tmpQ = aL[root].q;    if(!aL[root].rear){        if(deep<lDeep){            lDeep = deep;            lRetailer = 1;        }        else if(deep==lDeep) lRetailer ++;         return;    }    for(i=aL[root].front;i<aL[root].rear;i++)        Solve(tmpQ[i],deep+1);  }int main(){//  freopen("Data.txt","r",stdin);    Read();    Solve(0,0);    printf("%.4lf %d\n",p*pow(r/100+1,lDeep),lRetailer);    return 0;}
原创粉丝点击