✎
编程开发网
首页
C语言
C++
面试
Linux
函数
Windows
数据库
下载
搜索
当前位置:
首页
->
基础
->
c++编程基础
hdu3696 Farm Game 拓扑dp(二)
2015-01-27 10:12:08
·
作者:
·
浏览:
28
标签:
hdu3696
Farm
Game
拓扑
de
#include
#include
#include
#include
#include
#include
#include
using namespace std; typedef long long LL; #define min3(a,b,c) min(a,min(b,c)) #define max3(a,b,c) max(a,max(b,c)) #define pb push_back #define mp(a,b) make_pair(a,b) #define clr(a) memset(a,0,sizeof a) #define clr1(a) memset(a,-1,sizeof a) #define dbg(a) printf(%d ,a) typedef pair
pp; const double eps=1e-8; const double pi=acos(-1.0); const int INF=0x7fffffff; const LL inf=(((LL)1)<<61)+5; const int N=10005; struct node{ double c; int to; }; vector
g[N]; double p[N]; double w[N]; int in[N]; int main() { int n,m,k; while(~scanf(%d,&n)&&n) { for(int i=1;i<=n;i++) { g[i].clear(); in[i]=0; scanf(%lf%lf,&p[i],&w[i]); } scanf(%d,&m); while(m--) { int a,a1; double b; scanf(%d%d,&k,&a); k--; while(k--) { scanf(%lf%d,&b,&a1); node cur; cur.to=a,cur.c=b; g[a1].pb(cur); in[a]++; a=a1; } } queue
q; for(int i=1;i<=n;i++) if(in[i]==0) q.push(i); double ans=0; while(!q.empty()) { int cur=q.front(); q.pop(); ans+=p[cur]*w[cur]; for(int i=0;i
?
?
?
首页
上一页
1
2
下一页
尾页
2
/2/2