1 条题解

  • 0
    @ 2024-6-6 8:22:34
    #include<bits/stdc++.h>
    using namespace std;
    int r,c,sx,sy,ans=0;
    char m;
    int dx[4]={1,-1,0,0};
    int dy[4]={0,0,1,-1}; 
    vector<char>p[100005];
    vector<bool>vis[100005];
    void dfs(int x,int y)
    {
    	if(p[x][y]=='S') ans+=1;
    	else if(p[x][y]=='M') ans+=5;
    	else if(p[x][y]=='L') ans+=10;
    	for(int i=0;i<4;i++)
    	{
    		int xx=x+dx[i],yy=y+dy[i];
    		if(xx<0||xx>=r||yy<0||yy>=c) continue; //出范围了
    		if(p[xx][yy]=='*') continue; //干草走不了
    		if(vis[xx][yy]==1) continue; //摘过了
    		vis[xx][yy]=1;
    		dfs(xx,yy);
    	}
    }
    
    int main()
    {
    	cin>>r>>c;
    	for(int i=0;i<r;i++)
    		for(int j=0;j<c;j++)
    		{
    			cin>>m;
    			p[i].push_back(m);
    			vis[i].push_back(0);
    		}
    	cin>>sx>>sy;
    	vis[sx][sy]=1;
    	dfs(sx,sy);
    	cout<<ans;
    } 
    
    • 1

    [CCC 2024 J5] Harvest Waterloo【必做】

    信息

    ID
    791
    时间
    3000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    128
    已通过
    42
    上传者