bzoj 2346: [Baltic 2011]Lamp spfa
来源:互联网 发布:香港专业教育学院 知乎 编辑:程序博客网 时间:2024/05/17 08:08
题意
2255是一个傻X,他连自己家灯不亮了都不知道。
某天TZ大神路过他家,发现了这一情况,
于是TZ开始行侠仗义了。
TZ发现是电路板的问题,
他打开了电路板,发现线路根本没有连上!!
于是他强大的脑力可以使某个格子上的线路从\变为/,
或者从/变为\。
2255不会电路(因为他什么都不会),但是他想知道TZ最少要用多少次脑力才能使他家的灯变亮。
如果无法变亮,输出“NO SOLUTION”。
n,m<=500
分析
直接建图跑最短路。。。
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<queue>using namespace std;const int N=260005;const int inf=0x3f3f3f3f;int n,m,dis[N],last[N],cnt;char ch[N];struct edge{int to,next,w;}e[N*8];bool vis[N];queue<int> que;int point(int x,int y){ return (x-1)*(m+1)+y;}void addedge(int u,int v,int w){ e[++cnt].to=v;e[cnt].w=w;e[cnt].next=last[u];last[u]=cnt; e[++cnt].to=u;e[cnt].w=w;e[cnt].next=last[v];last[v]=cnt;}void spfa(){ for (int i=1;i<=(n+1)*(m+1);i++) dis[i]=inf; dis[1]=0;que.push(1);vis[1]=1; while (!que.empty()) { int u=que.front();que.pop(); for (int i=last[u];i;i=e[i].next) if (dis[u]+e[i].w<dis[e[i].to]) { dis[e[i].to]=dis[u]+e[i].w; if (!vis[e[i].to]) que.push(e[i].to),vis[e[i].to]=1; } vis[u]=0; }}int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) { scanf("%s",ch+1); for (int j=1;j<=m;j++) if (ch[j]=='/') { addedge(point(i,j+1),point(i+1,j),0); addedge(point(i,j),point(i+1,j+1),1); } else { addedge(point(i,j),point(i+1,j+1),0); addedge(point(i,j+1),point(i+1,j),1); } } spfa(); if (dis[(n+1)*(m+1)]<inf) printf("%d",dis[(n+1)*(m+1)]); else puts("NO SOLUTION"); return 0;}
阅读全文
0 0
- BZOJ 2346 Baltic 2011 Lamp SPFA
- bzoj 2346: [Baltic 2011]Lamp spfa
- 2346: [Baltic 2011]Lamp (SPFA+SLF优化)
- bzoj2346 [Baltic 2011]Lamp(建图spfa)
- BZOJ 2346 [Baltic 2011]Lamp dijkstra堆优化
- 【BZOJ】【P2346】【Baltic 2011】【Lamp】【题解】【堆Dijkstra】
- bzoj2346[Baltic 2011]Lamp
- 【BZOJ】【P2348】【Baltic 2011】【Plagiarism】【二分】
- BZOJ 2348 Baltic 2011 Plagiarism 排序
- BZOJ2348 [Baltic 2011]Plagiarism
- BZOJ 1339 Baltic 2008 Mafia 最小点割集
- BZOJ 3916 Baltic 2014 friends Hash
- BZOJ 1379 [Baltic 2001] 解题报告
- bzoj2348: [Baltic 2011]Plagiarism(水题)
- BZOJ 1001 & SPFA
- bzoj 1003(spfa+dp)
- BZOJ 1003 SPFA + DP
- BZOJ 1179 Tarjan + spfa
- xpath小练习
- Codeforces #269 (Div. 2)D. MUH and Cube Walls(KMP)
- Leetcode算法学习日志-338 Counting Bits
- 装饰者模式
- 抽象类,接口,与类的关系
- bzoj 2346: [Baltic 2011]Lamp spfa
- sqlyog注册码
- 大数据预科班3
- Atcoder Together
- 数据类型 数据类型转换 运算符
- 【NOIP2015D2】 解题报告
- 用GridView展示已经安装的应用
- jdbc存储过程
- Java基础部分总结3