Pagini recente » Diferente pentru problema/turism2 intre reviziile 7 si 4 | Diferente pentru problema/jetoane intre reviziile 22 si 23 | Diferente pentru problema/joculet intre reviziile 23 si 22 | Diferente pentru problema/geometrie intre reviziile 32 si 31 | Diferente pentru blog/acm-2013-etapa-nationala intre reviziile 12 si 13
Nu exista diferente intre titluri.
Diferente intre continut:
#include<vector>
using namespace std;
typedef vector<pair<int,int> >::iterator it;
#define MaxN 110000
#define ld long double
#define ll long double
int N;
ll Suma = 0;
int T[MaxN],Fii[MaxN],viz[MaxN];
vector<pair<int,int> > A[MaxN];
viz[nod] = 1;
Fii[nod] = 1;
for(it i=A[nod].begin();i<A[nod].end();i++)
if(!viz[i->first])
for(int i=0;i<A[nod].size();i++)
if(!viz[A[nod][i].first])
{
DF(i->first);
T[i->first] = nod;
Fii[nod] += Fii[i->first];
}
}
DF(A[nod][i].first);
T[A[nod][i].first] = nod;
Fii[nod] += Fii[A[nod][i].first];
inline double suma(void)
{
ld sum = 0;
for(int i=0;i<=N;i++)
for(it j=A[i].begin();j<A[i].end();j++)
if(j->first > i)
{
if(T[i] != j->first)
sum += (ld)j->second*Fii[j->first]*(N-Fii[j->first]);
else
sum += (ld)j->second*Fii[i]*(N-Fii[i]);
}
return sum/((ld)N*(N-1)/2);
Suma += (ll)(A[nod][i].second)*Fii[A[nod][i].first]*(N-Fii[A[nod][i].first]);
}
}
inline void sterge(void)
{
for(int i=0;i<N;i++)
A[i].clear(), Fii[i] = T[i] = viz[i] = 0;
A[i].clear(), Fii[i] = T[i] = viz[i] = Suma = 0;
}
int main()
{
//freopen("test.txt","r",stdin);
int T;
scanf("%d",&T);
citire();
DF(0);
printf("%lf\n",suma());
printf("%lf\n",(double)(Suma/((ll)N*(N-1)/2)));
sterge();
}
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.