【BZOJ 3036】 绿豆蛙的归宿
求期望的题目(~~~water~~~)
压了下代码,压成15行hhh;
我把代码压成这么丑估计也没有人看吧;
毕竟是zky讲的一个水题,就当给博客除草了;
dfs回溯时求当前节点的f,除以当前节点的出度(chu[x]),最后输出f[1]#include<cstdio> #include<cctype> #include<cstring> #include<algorithm> #define ll long long; using namespace std; struct node{int nxt,to,v;}E[200003]; bool vis[100003];double f[100003];int cnt=1,N,M,point[100003],chu[100003]; int getint(){char c;while (!isdigit(c=getchar()));int a=c-'0';while (isdigit(c=getchar()))a=a*10+c-'0';return a;} void insect(int a,int b,int c){E[cnt].nxt=point[a];point[a]=cnt;E[cnt].to=b;E[cnt].v=c;cnt++;} void dfs(int x){if (vis[x]) return; vis[x]=1; for (int i=point[x];i;i=E[i].nxt){dfs(E[i].to);f[x]+=E[i].v+f[E[i].to];} if (chu[x]!=0) f[x]=f[x]*1.0/chu[x];} int main(){N=getint(); M=getint(); memset(chu,0,sizeof(0));memset(point,0,sizeof(0)); memset(f,0,sizeof(f)); memset(vis,0,sizeof(vis)); while (M){M--;int a=getint(),b=getint(),c=getint();insect(a,b,c);chu[a]++;}dfs(1);printf("%.2lf\n",f[1]);return 0;}
这样就可以了,水一水BZOJ,纪念BZOJ权限费用增大为500元/年,800元/2年
NOI 2017 Bless All