POJ #3308.Paratroopers


题面传送门
什么题目卡精度卡到人没了。
首先肯定先化乘为加,取个log
然后一个点所在的一行或一列肯定至少有一个要被选中,注意到行列分开,所以直接二分图最小点覆盖就好了。
然后你写完一个普通的网络流交上去啪的一下很快啊就WA了。
因为神奇的POJ浮点数输出%f
code:

#include
#include
#include
#include
#include
#include
#include
#define I inline
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define abs(x) ((x)>0?(x):-(x))
#define re register
#define RI re int
#define ll long long
#define db double
#define lb long db
#define N 100
#define M 500
#define mod 1000000007
#define Mod (mod-1)
#define eps (1e-9)
#define U unsigned int
#define it iterator
#define Gc() getchar() 
#define Me(x,y) memset(x,y,sizeof(x))
#define d(x,y) (m*x+(y))
#define R(n) (rand()*rand()%(n)+1)
#define Pc(x) putchar(x)
using namespace std;
int T,n,m,k,d[N+5],Ns[N+5],x,y,Ts,S;db z,Ans;queue Q;
struct yyy{int to;db w;int z;}tmp;struct ljb{int head,h[N+5];yyy f[M+5<<2];I void add(int x,int y,db z){f[head]=(yyy){y,z,h[x]};h[x]=head++;}}s;
I int bfs(){
	RI i;while(!Q.empty()) Q.pop();Q.push(S);Me(d,0x3f);d[S]=0;Ns[S]=s.h[S];while(!Q.empty()) for(x=Q.front(),Q.pop(),i=s.h[x];~i;i=tmp.z){
		tmp=s.f[i];if(tmp.w