标签:
Description
Input
Output
Sample Input
1 4 10000 3 2 2 8000 3 5000 1000 2 1 4 200 3000 2 1 4 200 50 2 0
Sample Output
5250
“但是如果他和某个地位较低的人进行了交易,地位较高的的人不会再和他交易,他们认为这样等于是间接接触,反过来也一样。"这句话真的没有什么卵用,坑死我了!!!
附我的DFS强力代码:
/* DFS不解释,另外什么等级高与低之间不能交易没有用,坑死了!!! rank是该物品主人的等级 mon是该用于交换物品的现金 vis访问标记 xia是该物品是否能用别的物品交换 a[i][j]是i物品用j物品替代后还需花多少钱 */ #include<cstdio> #include<iostream> #include<cstdlib> #define M 110 #define INF 10000 using namespace std; int rank[M],mon[M],vis[M],xia[M],a[M][M],k,n,ans=INF; void dfs(int x,int t,int l,int r) { if(t>ans)return; ans=min(ans,t+mon[x]); if(!xia[x])return; for(int i=1;i<=n;i++) if(!vis[i]&&a[x][i]&&rank[i]>=l&&rank[i]<=r) { int ll=max(l,rank[i]-k); int rr=min(r,rank[i]+k); vis[i]=1; dfs(i,t+a[x][i],ll,rr); vis[i]=0; } } int main() { scanf("%d%d",&k,&n); for(int i=1;i<=n;i++) { scanf("%d%d%d",&mon[i],&rank[i],&xia[i]); for(int j=1;j<=xia[i];j++) { int x; scanf("%d",&x); scanf("%d",&a[i][x]); } } vis[1]=0; dfs(1,0,rank[1]-k,rank[1]+k); printf("%d",ans); return 0; }
标签:
原文地址:http://www.cnblogs.com/harden/p/5628316.html