51nod 1445 变色DNA(dij)

题目链接:51nod 1445 变色DNA

看了相关讨论再去用最短路:val[i][j]之间如果是‘Y’,说明i可以到达j,并且i到达j的代价是i那行 1到j-1 里面‘Y’的数量。

最后,求 0到n-1的最短路。

感觉读懂了题意就真的简单了。。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<vector>
 5 #include<queue>
 6 #define CLR(a,b) memset((a),(b),sizeof((a)))
 7 using namespace std;
 8 const int inf = 0x3f3f3f3f;
 9 const int N = 51;
10 int d[N], vis[N];
11 char mp[N];
12 int n;
13 struct qnode{
14     int v, c;
15     qnode(int _v = 0,int _c = 0):v(_v),c(_c) {}
16     bool operator < (const qnode &r)const{
17         return r.c < c;
18     }
19 };
20 vector<int>E[N];
21 void dij(){
22     priority_queue<qnode>q;
23     for(int i = 1; i <= n; ++i){
24         d[i] = inf;
25         vis[i] = 0;
26     }
27     d[1] = 0;
28     q.push(qnode(1, 0));
29     while(!q.empty()){
30         qnode t = q.top(); q.pop();
31         int u = t.v;
32         if(vis[u])
33             continue;
34         vis[u] = 1;
35         for(int i = 0; i < E[u].size(); ++i){
36             int v = E[u][i];
37             if(!vis[v] && d[u] + i < d[v]){
38                 d[v] = d[u] + i;
39                 q.push(qnode(v, d[v]));
40             }
41         }
42     }
43 }
44 int main(){
45     int t, i, j;
46     scanf("%d", &t);
47     while(t--){
48         scanf("%d", &n);
49         for(i = 0; i < N; ++i) E[i].clear();
50         for(i = 1; i <= n; ++i){
51             scanf("%s",mp+1);
52             for(j = 1; j <= n; ++j)
53                 if(mp[j] == 'Y')
54                     E[i].push_back(j);
55         }
56         dij();
57         printf("%d\n", d[n]==inf?-1:d[n]);
58     }
59     return 0;
60 }
View Code

 

posted @ 2016-10-22 18:38  GraceSkyer  阅读(360)  评论(0编辑  收藏  举报

~~~~~~ACM大牛语录,激励一下~~~~~~

为了世界的和平,为了女生的安全,我拼命做题,做题,做题!

用最短的时间,刷最多的题!

给我一滴泪,我就看到了你全部的海洋!

seize the hour, seize the day.

人生难免有无奈,幸福走远了,或是感叹幸福来迟了.其实我一直相信,无论手中的幸福是多么微不足道的感觉,我会把握住那每一分,每一秒,当幸福依旧像那百鸟般飞逝,终究无法掌握时,我会感谢它,曾经降临过!

A自己的题,让别人郁闷去吧

WA肠中过,AC心中留 TLE耳边过,AC特别牛

天然的悲苦和伤逝,过去有过,以后还会有

^*^一步一步往上爬^*^

AC就像练级,比赛就像PK. 练级不如PK好玩

其实,世上本没有ACM,AC的人多了,也便有了!

AC无止尽~ Seek you forever~

找呀找呀找水题,找到一个AC一个呀!

AC是检验程序的唯一标准。

真的猛士,敢于直面惨淡的人生,敢于正视淋漓的鲜血……