这是我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;
}