博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 1048 Low Cost Air Travel 最短路
阅读量:7260 次
发布时间:2019-06-29

本文共 2644 字,大约阅读时间需要 8 分钟。

以(i,j) 为结点建图,其中i表示目前已经到过行程单上的前i个城市,j是目前在哪个城市。

注意

1.起点是行程单上的第一个城市

2.城市的编号会很大,要重新编号。

//#pragma comment(linker, "/STACK:1024000000,1024000000")#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair
pii;#define pb(a) push(a)#define INF 0x1f1f1f1f#define lson idx<<1,l,mid#define rson idx<<1|1,mid+1,r#define PI 3.1415926535898template
T min(const T& a,const T& b,const T& c) { return min(min(a,b),min(a,c));}template
T max(const T& a,const T& b,const T& c) { return max(max(a,b),max(a,c));}void debug() {#ifdef ONLINE_JUDGE#else freopen("in.txt","r",stdin); //freopen("d:\\out1.txt","w",stdout);#endif}int getch() { int ch; while((ch=getchar())!=EOF) { if(ch!=' '&&ch!='\n')return ch; } return EOF;}struct HeapNode{ int d,u; bool operator < (const HeapNode &ant) const { return d>ant.d; }};struct Edge{ int from,to; int dist; int ticket_id;};const int maxn=5005;struct Dijksta{ int n; vector
g[maxn]; vector
edge; int done[maxn]; int d[maxn]; int p[maxn]; void init(int n) { this->n=n; for(int i=1;i<=n;i++) g[i].clear(); edge.clear(); } void add(int u,int v,int w,int id) { //if(u>maxn||v>maxn)while(1); Edge e=(Edge){u,v,w,id}; edge.push_back(e); g[u].push_back(edge.size()-1); } void solve(int s) { for(int i=1;i<=n;i++) d[i]=INF; d[s]=0; p[s]=-1; memset(done,0,sizeof(done)); priority_queue
q; q.push((HeapNode){ 0,s}); while(!q.empty()) { HeapNode x=q.top();q.pop(); if(done[x.u])continue; int u=x.u; done[u]=1; for(int i=0;i
s; for(e=p[e];e!=-1;e=p[edge[e].from]) s.push(edge[e].ticket_id); if(!s.empty()&&s.top()==0)s.pop(); while(!s.empty()) printf(" %d",s.top()),s.pop(); printf("\n"); }}solver;int id[11][maxn];int n;int ID(int a,int b){ int &x=id[a][b]; if(x==0)x=++n; return x;}int ticket[22][12],iti[22][12];int tickcost[22];int ticnum[22],itinum[22];int alltick,alliti;void process(int ca,int trip){ solver.init(5002); memset(id,0,sizeof(id)); n=0; for(int i=0;i
ma; for(int i=1;i<=alltick;i++) { tickcost[i]=readint(); ticnum[i]=readint(); for(int j=1;j<=ticnum[i];j++) { int x=readint(); if(ma[x]==0)ma[x]=++cnt; ticket[i][j]=ma[x]; } } scanf("%d",&alliti); for(int i=1;i<=alliti;i++) { itinum[i]=readint(); for(int j=1;j<=itinum[i];j++) { int x=readint(); if(ma[x]==0)ma[x]=++cnt; iti[i][j]=ma[x]; } } return 1;}int main(){ //debug(); int ca=0; while(read()) { ca++; for(int i=1;i<=alliti;i++) process(ca,i); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/BMan/p/3632967.html

你可能感兴趣的文章
Docker 容器没有运行的问题解决
查看>>
9种增强WordPress安全性的方法
查看>>
Kubernetes 1.14.2快速升级
查看>>
js数组操作
查看>>
经典问题“八皇后”的解法
查看>>
cacti-0.8.8b安装及配置threshold及monitor
查看>>
处理千万级数据,并保证数据最终一致的思路
查看>>
eclipse导入模块报错ImportError: No module named XXX
查看>>
java修饰符
查看>>
Linux设置口令复杂度和口令定期更换策略
查看>>
jsp页面的调用静态资源(如img,css,js)等资源时路径的写法
查看>>
可变参数列表实现printf函数
查看>>
MyEclipse Spring开发教程:使用基本的Spring功能(一)
查看>>
Intent 的显示意图和隐式意图
查看>>
猴年码约,这个ios开发怎么样
查看>>
QT仿照MFC读取INI文件(支持中文)
查看>>
mysql忘记密码
查看>>
文本处理三剑客
查看>>
TCP/IP 某些最常见的错误原因码 (errno)列表
查看>>
返回顶部
查看>>