pat 1030
来源:互联网 发布:家里穷不敢谈恋爱 知乎 编辑:程序博客网 时间:2024/06/03 13:20
df+回溯
#include<stdio.h>#include<stdlib.h>#include<vector>#include<string.h>using namespace std;int n,m,s,d,mindist,mincost,sum_dist,sum_cost;int mat[505][505];int cost[505][505];int vis[505];vector<int> v,res;void dfs(int x){ if(x==d){ if(mindist>sum_dist){ mindist=sum_dist; mincost=sum_cost; res.clear(); for(int j=0;j<v.size();j++) res.push_back(v[j]); }else if(mindist==sum_dist){ if(mincost>sum_cost){ mincost=sum_cost; res.clear(); for(int j=0;j<v.size();j++) res.push_back(v[j]); } } return; } for(int i=0;i<n;i++){ if(vis[i]==0&&mat[x][i]!=-1){ sum_dist+=mat[x][i]; sum_cost+=cost[x][i]; vis[i]=1; v.push_back(i); dfs(i); v.pop_back(); vis[i]=0; sum_cost-=cost[x][i]; sum_dist-=mat[x][i]; } }}int main(){ scanf("%d%d%d%d",&n,&m,&s,&d); memset(mat,-1,sizeof(mat)); memset(vis,0,sizeof(vis)); int a,b,c,d; for(int i=0;i<m;i++){ scanf("%d%d%d%d",&a,&b,&c,&d); mat[a][b]=mat[b][a]=c; cost[a][b]=cost[b][a]=d; } vis[s]=1; mindist=0x7fffffff; mincost=0x7fffffff; sum_dist=0; sum_cost=0; v.push_back(s); dfs(s); for(int i=0;i<res.size();i++){ if(i==0) printf("%d",res[i]); else printf(" %d",res[i]); } printf(" %d %d",mindist,mincost); //system("pause"); return 0;}
- pat 1030
- pat 1030
- pat 1030
- pat 1030
- PAT 1030
- PAT 1030
- pat 1030 Travel Plan
- PAT 1021-1030 题解
- PAT Advanced Level 1030
- PAT(甲级)1030
- 浙大PAT甲级 1030
- PAT 1030完美数列
- PAT乙级1030
- pat-bl-1030
- PAT甲级1030
- PAT乙级1026-1030
- pat乙级1030
- 浙大PAT甲级-1030
- Cookie 与 Session的区别
- Java:String和Date、Timestamp之间的转换
- LA3942——Trie,一维dp
- ABAP 类型导致ALV 报表筛选和导出到excel物料号显示不全
- VNC的使用
- pat 1030
- Android App 开发 设计模式第九篇:桥接模式
- POJ 3304 判断直线与线段相交
- 配置在eclipse中编码的联想功能
- android Desk桌面一键锁屏 源码
- richfaces排序
- Myeclipse8.5 反编译插件 jad 安装
- Maven-Hibernate3插件应用
- 打败Linux系统中的Bug