poj 1860 拓扑。。
生活随笔
收集整理的這篇文章主要介紹了
poj 1860 拓扑。。
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
參考
你有一些古幣,現(xiàn)在你要用這些古幣去兌換成其他錢(qián)幣。這個(gè)城市里有N個(gè)兌換點(diǎn),每個(gè)兌換點(diǎn)包括:
A----錢(qián)幣AB----錢(qián)幣B
Rab--A兌換為B的比例
Cab--A兌換為B的手續(xù)費(fèi)
Rba--B兌換為A的比例
Cba--B兌換為A的手續(xù)費(fèi)
現(xiàn)在你有編號(hào)為S的這種古幣,你將用這些古幣去進(jìn)行一系列的兌換,最終還是要兌換回古幣。你想知道能不能通過(guò)一系列兌換來(lái)增加自身的古幣。
N--錢(qián)幣的種類(lèi)總數(shù)(結(jié)點(diǎn)數(shù))
M--兌換點(diǎn)的數(shù)量(邊的條數(shù))
S--你的貨幣種類(lèi)標(biāo)識(shí)(起點(diǎn)&終點(diǎn))
V--你現(xiàn)在身上貨幣的數(shù)目 #include<algorithm> #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<vector> #include<queue> #include<stack> #include<iomanip> #include<string> #include<climits> #include<cmath> #define MAXV 110 #define MAXE 110<<1 #define LL long long using namespace std; int n,m,start; float num; int vis[MAXV]; float money[MAXV]; int cnt[MAXV]; struct Edge {int to,next;float rate,cost; }; Edge edge[MAXE]; int index=1; int first[MAXV];void add(int u,int v,float rate,float cost) {edge[index].to=v;edge[index].rate=rate;edge[index].cost=cost;edge[index].next=first[u];first[u]=index++; } bool spfa() {memset(cnt,0,sizeof(cnt)),memset(money,0,sizeof(money)),memset(vis,0,sizeof(vis));queue<int>Q;Q.push(start);vis[start]=1;money[start]=num;while(Q.size()){int t=Q.front();Q.pop();vis[t]=0;for(int i=first[t];i;i=edge[i].next){int to=edge[i].to;float tmp=(money[t]-edge[i].cost)*edge[i].rate*1.0;if(money[to]<tmp){money[to]=tmp;if(!vis[to]){Q.push(to);vis[to]=1;}cnt[to]++;if(cnt[to]>n) // 某個(gè)結(jié)點(diǎn)迭代次數(shù)超過(guò)了n次,存在正權(quán)回路return true;}}}return false; }int main() {scanf("%d %d %d %f",&n,&m,&start,&num);int a,b;float r1,c1,r2,c2;memset(first,0,sizeof(first));while(m--){scanf("%d %d %f %f %f %f",&a,&b,&r1,&c1,&r2,&c2);add(a,b,r1,c1);add(b,a,r2,c2);}if(spfa())puts("YES");elseputs("NO");return 0; }hdu上待做: ?We have carefully selected several similar problems for you:?? 2647 ? 3333 ? 3339 ? 3341 ? 3336 ?
總結(jié)
以上是生活随笔為你收集整理的poj 1860 拓扑。。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: hdu 1258 确定比赛名次
- 下一篇: Tarjan 算法详解