博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vijos P1794 文化之旅
阅读量:4582 次
发布时间:2019-06-09

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

标签:                                                                            

    

 题目链接 :  。                    

这是一道最短路题目,一开始当做暴搜题目来做TLE很多次,想要优化却改成WrongAnswer。最后用 过了。

思路:最短路,松弛判断的时候判断文化之间是否排斥,用一个二维数组记录当前城市那些文化已经学习;这一个状态的文化 = 上一个状态的文化 + 此次学习的文化。dfs 会比较慢。

 

#include
#include
#include
#include
#include
using namespace std;typedef long long int LL;const int INF=2e9+1e8;const int MAXSIZE=10000;int N,K,M,S,T; //题目信息int first[MAXSIZE],knext[MAXSIZE],ntotal; //邻接表,这是邻接表的数组存储方式;struct Edge{ int s,t,val;};Edge edge[MAXSIZE];int cultrue[MAXSIZE][MAXSIZE],city_cul[MAXSIZE]; //前者 记录文化之间的排斥关系,后面的巨鹿某一个城市的文化bool learn[105][105]; //这个数组 下标 i,j . 表示走到 i 号城市 j文化 是否学习,学习了为 true;void init()// 初始化邻接表;{ memset(first,-1,sizeof(first)); ntotal=0;}void addedge(int s,int t,int val) //添加边函数{ edge[ntotal].s=s,edge[ntotal].t=t,edge[ntotal].val=val; knext[ntotal]=first[s]; first[s]=ntotal; ntotal++;}bool check(int pre,int cul) //判断 前一个城市 pre 的文化{ if(learn[pre][cul]) return false; // 如果当前文化之前已经学过 返回false for(int i=1; i<=K; i++) { if(learn[pre][i]==true&&cultrue[cul][i]) return false; //如果上一个状态学过的文化 与 当前要学的排斥 false } return true; //否则 true}int spfa() //下面是 SPFA 模板 不懂上面有链接或者百度;{ queue
q; bool in_queue[200]; int dis[200]; for(int i=0; i<=110; i++) dis[i]=INF; memset(in_queue,0,sizeof(in_queue)); memset(learn,0,sizeof(learn)); dis[S]=0; q.push(S); in_queue[S]=1; learn[S][city_cul[S]]=1; while(!q.empty()) { int k,x=q.front(); q.pop(); in_queue[x]=0; k=first[x]; while(k+1) { int to=edge[k].t; if(dis[x]+edge[k].val

转载于:https://www.cnblogs.com/coded-ream/p/7207954.html

你可能感兴趣的文章
Oracle学习第七课-表连接及其应用
查看>>
Python基础篇【第十三篇】:面向对象
查看>>
bzoj 2465 小球
查看>>
Study Plan - The Thirty-Fifth Day
查看>>
图的深度优先遍历和广度优先遍历理解
查看>>
multi_index_container性能测试
查看>>
【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验
查看>>
AngularJs学习笔记--IE Compatibility 兼容老版本IE
查看>>
sql server还原数据库文件(.bak)常见问题解决办法笔记
查看>>
列表,元组,字典的常规操作及内置方法
查看>>
LayoutInflater介绍及例子
查看>>
python中星号变量的几种特殊用法
查看>>
centreon 画图x轴乱码
查看>>
初学AFNetWorking笔记
查看>>
团队项目开发总结
查看>>
架构师养成记--13.代码层面用信号量做限流(转)
查看>>
java int转integer方法
查看>>
内存泄漏的常见应用领域
查看>>
[.NET开发] C# 如何更改Word语言设置
查看>>
hdu4578线段树区间更新
查看>>