AC=SPFA+特殊处理

刚一看这道题,很多蒟蒻就肯定会想道用最短路来做,这题除了有文化的能与不能的限制以外,就是个模板题。那我们只需要修改输入输出,再在算法里判断,就可以—————————————————————————————————————————————

WA

没错,作者本人就是这样的。我感觉我的AC只是应为数据太水了

在这有几个主要的坑点

1,要反着搜(不知道为什么我正着搜就错一组,反着就AC了)应该是我的代码问题。
2,要处理好文化华之间的排斥关系。
3,处理好你所学习过的文化和其他文化的矛盾判断。

我是分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~

由于每个国家与一个文化,用c[国家民(i)]=cin>>文化种类,来存。
k*k的文化关系矩阵中,可以用有向图来存,我用是一维数组:a[文化种类]=排斥的文化。
用一个集合来存所学过的文化。

有了以上的想法,我们就可以来吸大麻写代码了

AC如下:

#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
int n,m,k,ts,te;
int c[100010];
int a[10010];
struct node{//存国家之间的地理位置(无向图)int u;int w;node(int uu,int ww){u=uu;w=ww;}
};
vector<vector<node> > v(10001);//邻接表存图
bool vis[10010];//标记点
set<int> cnt;//存已学过的文化
int dis[10010];//松弛专用数组
void yja(int sx){memset(dis,inf,sizeof(dis));queue<int> q;q.push(sx);dis[sx]=0;cnt.insert(c[sx]);//学习了sx国的文化while(!q.empty()){int s=q.front();q.pop(); vis[s]=0; for(int i=0;i<v[s].size();i++){if(cnt.find(c[v[s][i].u])==cnt.end() && cnt.find(a[c[v[s][i].u]])==cnt.end()){//如果没有学校与s国相连v[s][i].u国的文化,且它国所排斥的文化我没有学if(dis[v[s][i].u]>v[s][i].w+dis[s]){dis[v[s][i].u]=v[s][i].w+dis[s];if(!vis[v[s][i].u]){q.push(v[s][i].u);vis[v[s][i].u]=1;cnt.insert(c[v[s][i].u]);//学习}}} }}
}
int main(){//freopen("testdata.txt","r",stdin); 不要看我QWQcin>>n>>k>>m>>ts>>te;for(int i=1;i<=n;i++){cin>>c[i];}for(int i=1;i<=k;i++){for(int j=1;j<=k;j++){bool in;cin>>in;if(in){a[i]=j;//i文化排斥j}}}for(int i=1;i<=m;i++){int tx,ty,tz;cin>>tx>>ty>>tz;v[tx].push_back(node(ty,tz));v[ty].push_back(node(tx,tz));//存图}yja(te);//以终点为起点if(dis[ts]==0x3f3f3f3f){cout<<-1;//如果无法到达,输出-1}else{cout<<dis[ts];    }while(1);//放那啥return 0;
}

但我想说这个代码有个关键的问题:i文化不只排斥一个j,而我存的时候直接把上一个覆盖了,所以我也不知道我为什么能AC,但大体思路是这样——数据太水,玄学保佑。

P1078 文化之旅(洛谷)相关推荐

  1. 洛谷 P1078 文化之旅

    深搜,剪枝.个人认为此题与棋盘其实非常相似 用一个数组记录到达某个国家的最小距离(初值无穷大),就可以把大于等于该距离的剪枝掉(注意等于也必须减去,否则极有可能玄学错误) #include<bi ...

  2. P1078 文化之旅[最短路]

    题目背景 本题是错题,后来被证明没有靠谱的多项式复杂度的做法.测试数据非常的水,各种玄学做法都可以通过(比如反着扫),不代表算法正确.因此本题题目和数据仅供参考. 题目描述 有一位使者要游历各国,他每 ...

  3. P1078 文化之旅

    题面 这题好像是初二时老师讲过的一道题,但是..我没听??反正没交过就对了.. 我本来想的是深搜+spfa,写到50+行实现不了??果断看tj,floyd???(黑人问号???)这么简单的题绿了??? ...

  4. 洛谷P5274 优化题(ccj)

    洛谷P5274 优化题(ccj) 题目背景 CCJCCJ 在前往参加 Universe \ OIUniverse OI 的途中... 题目描述 有一个神犇 CCJCCJ,他在前往参加 Universe ...

  5. 算法刷题【洛谷P1593】因子和(附等比数列求和公式推导)

    异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...

  6. 【LGR-142-Div.4】洛谷入门赛 #13 考后分析与题解

    洛谷入门赛 #Round 13 比赛分析与总结 T1 魔方 题目背景 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 数据规模与约定 分析 AC代码 注意 T2 教学楼 ...

  7. 算法刷题【洛谷U193902】橡皮泥

    异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...

  8. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  9. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

最新文章

  1. 三种方式搭建yum源
  2. JDK12下的ArrayList源码解读 与 Vector的对比
  3. excel 树结构json_写一个上传excel表格,解析成 json 的接口
  4. Oracle编程入门经典 第1章 了解Oracle
  5. 【C语言简单说】十三:逻辑运算符||
  6. mysql不复制数据_windows mysql不停止服务复制数据
  7. 我们为何需要单点登录系统
  8. 显示器接口VGA、DVI、HDMI、DP
  9. computational science education project
  10. Hdu 5339 Untitled (数学思维)
  11. 美团电单车中标警用车采购项目,上千辆定制版警用电单车上线!
  12. [推荐]查看Json输出的*最方便*的方法 (转)
  13. mac下HTTP与HTTPS抓包
  14. 《我也能做CTO之程序员职业规划》之三:曲线定律
  15. Linux编译DuiLib库报error: no matches converting function ‘ItemComareFunc’ to type ‘__compar_d_fn_t错误解决
  16. 计算机视觉中的多视图几何<Part0—基础知识:射影几何、变换和估计>(3)
  17. ImageBox网页图片批量下载器
  18. LeetCode hot-100 简单and中等难度,61-70.
  19. Packet Tracer6.0静态路由,RIP,OSPF路由方案配置(1)
  20. w3c标准 - Css - (1)基本介绍及选择器

热门文章

  1. c语言CFile的使用方法,mfc文件操作CFile类之创建文件的方法
  2. mysql 触发器 模板_MySQL 触发器例子(两张表同步增加和删除)
  3. win10桌面计算机怎么显示器,一台电脑两个显示器如何设置
  4. libusb函数说明
  5. SCORM标准的LMS
  6. SFP(Soft Filter Pruning)笔记
  7. 学区摇号软件设计_重学 Java 设计模式:实战观察者模式「模拟类似小客车指标摇号过程,监听消息通知用户中签场景」...
  8. g4560和二代i5_奔腾g4560和i5 2500K哪个好
  9. 大端小端存储方式详解
  10. 深入理解什么是LSM-Tree