对于测试点样例过了不得分这件事,求助!
查看原帖
对于测试点样例过了不得分这件事,求助!
977222
yanglich楼主2023/12/16 13:58

测试点样例过了不得分

#include <bits/stdc++.h>
using namespace std;
int m, n, sum;
int dis[505][505];
 
int main() {
    cin >> m >> n;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            dis[i][j] = 0;
        }
    }
    for (int i = 1; i <= m+1; i++) {
        int ls[505],j=1;
        string a;
        getline(cin,a);
        ls[j]=0;
        for(int k=0;k<a.size();k++){
        	if(a[k]==' '){
        		j++;
        		ls[j]=0;
			}
			else{
				ls[j]*=10;
				ls[j]+=(a[k]-'0');
			}
		}
        for (int jj = 1; jj < j; jj++) {
            for (int k = jj + 1; k <= j; k++) {
                dis[ls[jj]][ls[k]] = 1;
            }
        }
    }
//    for(int i=1;i<=n;i++){
//    	for(int j=1;j<=n;j++){
//    		cout<<dis[i][j]<<" ";
//		}
//		cout<<"\n";
//	}
    for (int k = 1; k <= n; k++) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                if (dis[i][k] != 0 && dis[k][j] != 0) {
                    if (dis[i][j] == 0) {
                        dis[i][j] += dis[i][k] + dis[k][j];
                    } else if (dis[i][k] + dis[k][j] < dis[i][j]) {
                        dis[i][j] += dis[i][k] + dis[k][j];
                    }
                }
            }
        }
    }
    if (dis[1][n] == 0) {
        cout << "N0";
    } else {
        cout << dis[1][n] - 1;
    }
    return 0;
}
2023/12/16 13:58
加载中...