#include #include #include #include #include #include #include using namespace std; #define LL __int64 #define maxn 100011 int t[maxn],c[maxn],n,q,m[maxn],vis[maxn],a[maxn],b[maxn]; map >nn; mapmm; mapll; int bb[1001]; int flag[maxn],s[maxn],ss[maxn]; void find(int x) { ll.clear(); int tt=1,i,j,k,y,z,d; s[0]=0;s[1]=c[x];ll[x]=1,ss[1]=x; for(i=2;;i++) { vis[x]=1; x=t[x]; ss[i]=x; if(ll[x]) break; if(vis[x]) { for(j=i-1;j>=1;j--) { a[ss[j]]=s[i-1]-s[j-1]+a[x]; b[ss[j]]=b[x]; } return; } ll[x]=++tt; s[i]=s[i-1]+c[x]; } d=s[i-1]-s[ll[x]-1]; for(j=1;j