可能是换行的问题?为什么MLE了啊???求调
查看原帖
可能是换行的问题?为什么MLE了啊???求调
819682
Exile_Code楼主2024/3/24 12:52
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <vector>
#include <set>
#include <map>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <list>
#include <string>
#include <cmath>
#include <bitset>
#include <stack>
#include <math.h>
#include <functional>
#define ull             unsigned long long 
#define ll              long long 
#define pii             pair<ll ,ll>
#define cy              cout<<"YES"<<endl
#define cn              cout<<"NO"<<endl
#define forn(i,begin,end,add)	for(ll (i)=(begin);(i)<=(end);(i)+=(add))	//begin是i的起始,end是i的终止,add是每次加的大小
#define rforn(i,begin,end,sub)  for(ll (i)=(end);(i)>=(begin);(i)-=(sub))	//r是倒序遍历
#define vv              vector
#define inf32           INT32_MAX/2
#define inf64           INT64_MAX/2
#define LD              double
#define PI              acos(-1)
#define debug(a,b)		cout<<a<<b
#define eps				1e-12
const int N = 4e5 + 100;
const int mod = 998244353;
ll T;




void solve() {


    int n, m, s; cin >> m >> n ;
    s = 1;
    vv <vv<pair<int,int>>>area(n + 1);
    forn(i, 1, m, 1){
        vv<int>all;
        char ch;
        do{
            int a; cin >> a;
            all.push_back(a);
            ch = getchar();
        } while (ch != '\n');
        forn(i, 0, all.size() - 1, 1)
            forn(j, i + 1, all.size() - 1, 1)
              area[all[i]].push_back({all[j],1});
    }
    vv<int>d(n + 1, inf32);
    priority_queue<pair<int,int>>q;
    vv<int>flag(n + 1);

    q.push({ 0,s });
    d[s] = 0;
    while (q.size()) {
        auto nd = q.top().second;
        q.pop();
        if (flag[nd])
            continue;
        flag[nd] = 1;
        for (auto a : area[nd]) {

            if (d[a.first] > d[nd] + a.second){
                d[a.first] = d[nd] + a.second;
                q.push({ -d[a.first],a.first });
            }
        }
    }


    if (d[n] == inf32)
        cout << -1 << endl;
    else
        cout << d[n]-1 << endl;
    
}
int main() {


    T = 1;
    //cin >> T;
    while(T--)
        solve();
    return 0;

}
2024/3/24 12:52
加载中...