P1576 最小花费
2017-07-05 20:20
232 查看
题目描述
在n个人中,某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元。
输入输出格式
输入格式:
第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数。
以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费 (z<100)。
最后一行输入两个正整数A,B。数据保证A与B之间可以直接或间接地转账。
输出格式:
输出A使得B到账100元最少需要的总费用。精确到小数点后8位。
输入输出样例
输入样例#1:
3 3
1 2 1
2 3 2
1 3 3
1 3
输出样例#1:
103.07153164
说明
1<=n<=2000
SPFA裸题*
完全图边数 m < n* n / 2 (Cn2=An2 / 2!=n * (n-1)/2)
对于double型变量,当我们想要清极大值的时候,我们可以选择0x7f,当然如果觉得这个数字过于夸张,我们可以选择0x42或者0x43。同样,想清最小值的时候,可以选择0xfe或0xc2
在n个人中,某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元。
输入输出格式
输入格式:
第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数。
以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费 (z<100)。
最后一行输入两个正整数A,B。数据保证A与B之间可以直接或间接地转账。
输出格式:
输出A使得B到账100元最少需要的总费用。精确到小数点后8位。
输入输出样例
输入样例#1:
3 3
1 2 1
2 3 2
1 3 3
1 3
输出样例#1:
103.07153164
说明
1<=n<=2000
SPFA裸题*
完全图边数 m < n* n / 2 (Cn2=An2 / 2!=n * (n-1)/2)
对于double型变量,当我们想要清极大值的时候,我们可以选择0x7f,当然如果觉得这个数字过于夸张,我们可以选择0x42或者0x43。同样,想清最小值的时候,可以选择0xfe或0xc2
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int cnt,st,ed,s,t,w,h[2005],stack[100005]; double dis[2005],q[100005]; struct Node{ int to,w,next; }edge[2000005];//10005,1005 void add(int s,int t,int v) { cnt++; edge[cnt].to=t; edge[cnt].w=v; edge[cnt].next =h[s]; h[s]=cnt; } int spfa() { int head=1,tail=1; q[1]=st; while(head<=tail) { int u=q[head]; for(int i=h[u];i;i=edge[i].next) { int v=edge[i].to; if(100*dis[u]/(100-edge[i].w)<dis[v]) { dis[v]=(100*dis[u])/(100-edge[i].w); if(!stack[v]) { stack[v]=1; tail++; q[tail]=v; } } } head++; stack[u]=0;//退出栈 } } int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d%d%d",&s,&t,&w);//%的权值 add(t,s,w); add(s,t,w); } scanf("%d%d",&ed,&st);//起点,终点 memset(dis,0x7f,sizeof dis); dis[st]=100.00; spfa(); printf("%.8lf\n",dis[ed]); }
相关文章推荐
- P1576 最小花费
- P1576 最小花费
- 洛谷P1576 最小花费
- 洛谷 P1576 最小花费
- 洛谷P1576 最小花费x
- P1576 最小花费 洛谷
- 动态规划求解 最小花费
- 5-50 畅通工程之局部最小花费问题 (35分)
- ZOJ3715 竞选班长求最小花费
- hdu 3790 最短路径问题 【双权值最短路(相同最小距离,求最小花费)】
- 第四届CCF软件能力认证(CSP2015) 第五题(最小花费)题解
- 最小花费
- HDU 3987 求断开两点最小花费下的边数 最小割
- UVA 10714-Ants(求花费的最大最小时间)
- hdu 4003 求用k个机器人遍历一棵树的所有节点所需的最小花费
- 5-50 畅通工程之局部最小花费问题 (35分)
- 最小花费
- poj 3308 最小点权覆盖集, 见 胡驳涛论文里面有讲见图方法 二分图最小权点覆盖 我的想法是一个东西通过两个操作都可以完成,这些操作还可以完成其他的东西,每个操作有一个花费,现在要你选出花费最小的操作。这就是裸的模型
- 题目1086:最小花费
- 1225: 最小花费