*hdu 2437 DFS
来源:互联网 发布:任务网源码 编辑:程序博客网 时间:2024/06/07 21:01
个人感觉是很好的一道题~~
#include <iostream>#include <cstring>#include <cstdio>#define INF 0x3f3f3f3fusing namespace std;const int MAXN=1005;const int MAXM=20005;struct node{ int u,v,w;};node edge[MAXM];int first[MAXN],next[MAXM];int cc,n,m,s,k;inline void add_edge(int u,int v,int w){ edge[cc].u=u; edge[cc].v=v; edge[cc].w=w; next[cc]=first[u]; first[u]=cc; cc++;}char tag[MAXN];int dis[MAXN][MAXN];int res,z;void dfs(int u,int cur_d){ int i; if(tag[u]=='P'&&cur_d%k==0&&(cur_d<res||(cur_d==res&&u<z))) { res=cur_d; z=u; return ; } for(i=first[u];i!=-1;i=next[i]) { int v=edge[i].v; int d=cur_d+edge[i].w; if(dis[v][d%k]==-1||dis[v][d%k]>d) { dis[v][d%k]=d; dfs(v,d); } }}int main(){ int t; scanf("%d",&t); int cas=0; while(t--) { cas++; scanf("%d%d%d%d",&n,&m,&s,&k); int i; getchar(); for(i=1;i<=n;i++) scanf("%c",&tag[i]); memset(first,-1,sizeof(first)); memset(next,-1,sizeof(next)); cc=0; memset(dis,-1,sizeof(dis)); for(i=1;i<=m;i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); add_edge(u,v,w); } res=INF; z=0; dfs(s,0); printf("Case %d:",cas); if(res==INF) printf(" -1 -1\n"); else printf(" %d %d\n",res,z); } return 0;}
- hdu 2437 DFS
- *hdu 2437 DFS
- hdu 2437(dfs)
- hdu 2437 Jerboas(bfs,dfs)
- HDU DFS
- 【DFS】HDU
- HDU DFS
- HDU-2610 && HDU-2610 (dfs)
- HDU 1864 (DFS)
- hdu 1258 DFS
- hdu 1045 DFS+回溯
- hdu--1342 lotto (dfs)
- hdu 1010(DFS)
- hdu 1501(dfs)
- hdu 1010DFS
- HDU 3720 DFS
- hdu 2212 DFS
- hdu 1181 dfs
- NOIP 2012 Vijos 1787 普及组 寻宝 模拟
- 九度笔记之 1405:店小二的IDEA
- ASIHTTPRequest 编译提示找不到"libxml/HTMLparser.h"的解决方法
- IOS 之sqlite在数据库中添加数据
- 如何简单快速的修改Bootstrap
- *hdu 2437 DFS
- SEO如何让蜘蛛适应你
- Fortran中处理字符串数字和文件的模块StrNum
- 郁闷啊`
- ASIHTTPRequest 之简单使用
- Eclipse启动慢分析及解决方案
- ASIHTTPRequest 安装和使用说明
- ADT升级中出现的问题的解决方案
- poj 3348 Cows