Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

代码

Posted by 201321131067 at 2015-10-21 15:24:27 on Problem 1860
In Reply To:有路过的请看下这组数据!! Posted by:201321131067 at 2015-10-21 15:18:06
我的代码如下:
//1860 Currency Exchange
#include<stdio.h>
#include<string.h>
#include<queue>
#define max 105
struct node{
	int v,next;
	double r,c;//汇率,手续费 
};
struct poj{
	int id;
	double value;
};
double money[max];
int n,m,s,head[max],end=0;
node point[max*2];
void add(int u,int v,double r,double c){
	point[end].v=v;
	point[end].r=r;
	point[end].c=c;
	point[end].next=head[u];
	head[u]=end++;
}
bool spaf(){
	poj u,temp;
	u.id=s;
	u.value=money[s]=1.0;
	std::queue<poj> q;
	q.push(u);
	while(!q.empty()){
		u=q.front();q.pop();
		for(int i=head[u.id];i!=-1;i=point[i].next){
			temp.id=point[i].v;
			temp.value=u.value*(100-point[i].c)*point[i].r/100;
			if(money[temp.id]<temp.value){
				money[temp.id]=temp.value;
				q.push(temp);
				if(temp.value>1.0&&temp.id==s) return true;
			}
		}
	}
	return false;
}
int main(){
	memset(head,-1,sizeof(head));
	memset(money,0,sizeof(money));
	int u,v;
	double rst,cst,rts,cts;
	scanf("%d%d%d%lf",&n,&m,&s,&money[0]);
	for(int i=0;i<m;i++){
		scanf("%d%d%lf%lf%lf%lf",&v,&u,&rst,&cst,&rts,&cts);
		add(u,v,rst,cst);
		add(v,u,rts,cts);
	}
	if(spaf()) printf("YES\n");
	else printf("NO\n");
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator