我不知道为什么SPOJ中的MICEMAZE代码会给WA?

时间:2016-07-13 18:20:18

标签: graph dijkstra

这是我MICEMAZE的代码。编写一个程序,给定迷宫和时间限制的描述,预测将退出迷宫的老鼠数量。假设迷宫没有瓶颈,即所有细胞都有适合任意数量小鼠的空间。

#include <iostream>
#include <cstring>
#include <climits>
using namespace std;
int n,e,t,m;
int d[101][101];
int dis[101];
bool vis[101];
void djk()
{
    memset(vis,false,sizeof vis);

    for(int i=0;i<n;i++)
    {
        dis[i]=300000000;


    }
     dis[e]=0;
    for(int i=0;i<n;i++)
    {
        int mi = INT_MAX, u;

   for (int v = 0; v < n; v++)
     if (vis[v] == false && dis[v] <= mi)
         mi = dis[v], u = v;
        vis[u]=true;
            for(int j=0;j<n;j++)
            {
                if(d[u][j]!=0 && dis[j]!=INT_MAX && vis[j]==false &&     dis[j]>dis[u]+d[u][j])
                    dis[j]=dis[u]+d[u][j];
            }
    }
}

int main()
{
    cin>>n>>e>>t>>m;
    memset(d,0,sizeof d);
    e--;
    for(int i=0;i<m;i++)
    {
        int x,y,s;
        cin>>x>>y>>s;
        d[x-1][y-1]=s;
    }
    int cnt=0;
    djk();
    for(int i=0;i<n;i++)
    {
        //cout<<dis[i]<<endl;
        if(dis[i]<=t) cnt++;
    }
    cout<<cnt<<endl;
    return 0;
}

0 个答案:

没有答案