#include<bits/stdc++.h>
using namespace std;
struct point
{
int a,b;
}a[101];
struct score
{
int a,b,steps;
string s;
};
int n,m;
void bfs()
{
queue<score>q;
q.push({0,0,0,""});
while(!q.empty())
{
score u=q.front();
q.pop();
if(u.a==m&&u.b==m)
{
cout<<u.steps<<endl;
cout<<u.s<<endl;
return;
}
for(int i=1;i<=n;i++)
{
int na=u.a+a[i].a,nb=u.b+a[i].b;
if(na>m||nb>m)continue;
q.push({na,nb,u.steps+1,u.s+to_string(i)+" "});
}
}
}
int main()
{
freopen("hill.in","r",stdin);
freopen("hill.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i].a>>a[i].b;
bfs();
return 0;
}
你这不应该CE嘛
这一句CE了啊
- 分号没打
steps
没有定义,也许是u.steps
并且还有 freopen
,当然没有输出了
等一下,对不起发错代码了。
此题:
是文件读写
你是不是要有一个vis数组,要不然队列空间就炸了,就会运行错误,所以准确来说你是TLE
身为一个傻*,呃,它题目里不是可以多次用吗?