QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#304417#8011. Instituteucup-team1055#AC ✓84ms27240kbC++209.4kb2024-01-13 19:29:282024-01-13 19:29:29

Judging History

你现在查看的是最新测评结果

  • [2024-01-13 19:29:29]
  • 评测
  • 测评结果:AC
  • 用时:84ms
  • 内存:27240kb
  • [2024-01-13 19:29:28]
  • 提交

answer

#line 2 "/Users/noya2/Desktop/Noya2_library/template/template.hpp"
using namespace std;

#include<bits/stdc++.h>
#line 1 "/Users/noya2/Desktop/Noya2_library/template/inout_old.hpp"
namespace noya2 {

template <typename T, typename U>
ostream &operator<<(ostream &os, const pair<T, U> &p){
    os << p.first << " " << p.second;
    return os;
}
template <typename T, typename U>
istream &operator>>(istream &is, pair<T, U> &p){
    is >> p.first >> p.second;
    return is;
}

template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v){
    int s = (int)v.size();
    for (int i = 0; i < s; i++) os << (i ? " " : "") << v[i];
    return os;
}
template <typename T>
istream &operator>>(istream &is, vector<T> &v){
    for (auto &x : v) is >> x;
    return is;
}

void in() {}
template <typename T, class... U>
void in(T &t, U &...u){
    cin >> t;
    in(u...);
}

void out() { cout << "\n"; }
template <typename T, class... U, char sep = ' '>
void out(const T &t, const U &...u){
    cout << t;
    if (sizeof...(u)) cout << sep;
    out(u...);
}

template<typename T>
void out(const vector<vector<T>> &vv){
    int s = (int)vv.size();
    for (int i = 0; i < s; i++) out(vv[i]);
}

struct IoSetup {
    IoSetup(){
        cin.tie(nullptr);
        ios::sync_with_stdio(false);
        cout << fixed << setprecision(15);
        cerr << fixed << setprecision(7);
    }
} iosetup_noya2;

} // namespace noya2
#line 1 "/Users/noya2/Desktop/Noya2_library/template/const.hpp"
namespace noya2{

const int iinf = 1'000'000'007;
const long long linf = 2'000'000'000'000'000'000LL;
const long long mod998 =  998244353;
const long long mod107 = 1000000007;
const long double pi = 3.14159265358979323;
const vector<int> dx = {0,1,0,-1,1,1,-1,-1};
const vector<int> dy = {1,0,-1,0,1,-1,-1,1};
const string ALP = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const string alp = "abcdefghijklmnopqrstuvwxyz";
const string NUM = "0123456789";

void yes(){ cout << "Yes\n"; }
void no(){ cout << "No\n"; }
void YES(){ cout << "YES\n"; }
void NO(){ cout << "NO\n"; }
void yn(bool t){ t ? yes() : no(); }
void YN(bool t){ t ? YES() : NO(); }

} // namespace noya2
#line 1 "/Users/noya2/Desktop/Noya2_library/template/utils.hpp"
namespace noya2{

unsigned long long inner_binary_gcd(unsigned long long a, unsigned long long b){
    if (a == 0 || b == 0) return a + b;
    int n = __builtin_ctzll(a); a >>= n;
    int m = __builtin_ctzll(b); b >>= m;
    while (a != b) {
        int mm = __builtin_ctzll(a - b);
        bool f = a > b;
        unsigned long long c = f ? a : b;
        b = f ? b : a;
        a = (c - b) >> mm;
    }
    return a << min(n, m);
}

template<typename T> T gcd_fast(T a, T b){ return static_cast<T>(inner_binary_gcd(abs(a),abs(b))); }

long long sqrt_fast(long long n) {
    if (n <= 0) return 0;
    long long x = sqrt(n);
    while ((x + 1) * (x + 1) <= n) x++;
    while (x * x > n) x--;
    return x;
}

template<typename T> T floor_div(const T n, const T d) {
    assert(d != 0);
    return n / d - static_cast<T>((n ^ d) < 0 && n % d != 0);
}

template<typename T> T ceil_div(const T n, const T d) {
    assert(d != 0);
    return n / d + static_cast<T>((n ^ d) >= 0 && n % d != 0);
}

template<typename T> void uniq(vector<T> &v){
    sort(v.begin(),v.end());
    v.erase(unique(v.begin(),v.end()),v.end());
}

template <typename T, typename U> inline bool chmin(T &x, U y) { return (y < x) ? (x = y, true) : false; }

template <typename T, typename U> inline bool chmax(T &x, U y) { return (x < y) ? (x = y, true) : false; }

template<typename T> inline bool range(T l, T x, T r){ return l <= x && x < r; }

} // namespace noya2
#line 8 "/Users/noya2/Desktop/Noya2_library/template/template.hpp"

#define rep(i,n) for (int i = 0; i < (int)(n); i++)
#define repp(i,m,n) for (int i = (m); i < (int)(n); i++)
#define reb(i,n) for (int i = (int)(n-1); i >= 0; i--)
#define all(v) (v).begin(),(v).end()

using ll = long long;
using ld = long double;
using uint = unsigned int;
using ull = unsigned long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
using pil = pair<int,ll>;
using pli = pair<ll,int>;

namespace noya2{

/* ~ (. _________ . /) */

}

using namespace noya2;


#line 2 "c.cpp"

#line 2 "/Users/noya2/Desktop/Noya2_library/graph/scc.hpp"

#line 4 "/Users/noya2/Desktop/Noya2_library/graph/scc.hpp"

namespace noya2{

template <class E> struct internal_csr {
    std::vector<int> start;
    std::vector<E> elist;
    explicit internal_csr(int n, const std::vector<std::pair<int, E>>& edges)
        : start(n + 1), elist(edges.size()) {
        for (auto e : edges) {
            start[e.first + 1]++;
        }
        for (int i = 1; i <= n; i++) {
            start[i] += start[i - 1];
        }
        auto counter = start;
        for (auto e : edges) {
            elist[counter[e.first]++] = e.second;
        }
    }
};

struct scc_graph {
  public:
    explicit scc_graph(int n) : _n(n) {}

    int num_vertices() { return _n; }

    void add_edge(int from, int to) { edges.push_back({from, {to}}); }

    // @return pair of (# of scc, scc id)
    std::pair<int, std::vector<int>> scc_ids() {
        auto g = internal_csr<edge>(_n, edges);
        int now_ord = 0, group_num = 0;
        std::vector<int> visited, low(_n), ord(_n, -1), ids(_n);
        visited.reserve(_n);
        auto dfs = [&](auto self, int v) -> void {
            low[v] = ord[v] = now_ord++;
            visited.push_back(v);
            for (int i = g.start[v]; i < g.start[v + 1]; i++) {
                auto to = g.elist[i].to;
                if (ord[to] == -1) {
                    self(self, to);
                    low[v] = std::min(low[v], low[to]);
                } else {
                    low[v] = std::min(low[v], ord[to]);
                }
            }
            if (low[v] == ord[v]) {
                while (true) {
                    int u = visited.back();
                    visited.pop_back();
                    ord[u] = _n;
                    ids[u] = group_num;
                    if (u == v) break;
                }
                group_num++;
            }
        };
        for (int i = 0; i < _n; i++) {
            if (ord[i] == -1) dfs(dfs, i);
        }
        for (auto& x : ids) {
            x = group_num - 1 - x;
        }
        return {group_num, ids};
    }

    std::vector<std::vector<int>> scc() {
        auto ids = scc_ids();
        int group_num = ids.first;
        std::vector<int> counts(group_num);
        for (auto x : ids.second) counts[x]++;
        std::vector<std::vector<int>> groups(ids.first);
        for (int i = 0; i < group_num; i++) {
            groups[i].reserve(counts[i]);
        }
        for (int i = 0; i < _n; i++) {
            groups[ids.second[i]].push_back(i);
        }
        return groups;
    }

  private:
    int _n;
    struct edge {
        int to;
    };
    std::vector<std::pair<int, edge>> edges;
};

} // namespace noya2
#line 2 "/Users/noya2/Desktop/Noya2_library/data_structure/csr.hpp"

#line 4 "/Users/noya2/Desktop/Noya2_library/data_structure/csr.hpp"
#include<ranges>
#line 7 "/Users/noya2/Desktop/Noya2_library/data_structure/csr.hpp"

namespace noya2 {

template<class E>
struct csr {
    csr (int n_ = 0, int m_ = -1) : n(n_), m(m_) {
        if (m >= 0){
            es.reserve(m);
            start.reserve(m);
        }
        if (m == 0){
            build();
        }
    }
    int add(int idx, E elem){
        int eid = start.size();
        es.emplace_back(elem);
        start.emplace_back(idx);
        if (eid+1 == m) build();
        return eid;
    }
    void build(){
        if (m == -2) return ;
        m = start.size();
        std::vector<E> nes(m);
        std::vector<int> nstart(n+2,0);
        for (int i = 0; i < m; i++) nstart[start[i]+2]++;
        for (int i = 1; i < n; i++) nstart[i+2] += nstart[i+1];
        for (int i = 0; i < m; i++) nes[nstart[start[i]+1]++] = es[i];
        swap(es,nes);
        swap(start,nstart);
        m = -2;
    }
    const auto operator[](int idx) const {
        assert(m == -2);
        return std::ranges::subrange(es.begin()+start[idx],es.begin()+start[idx+1]);
    }
  private:
    int n, m;
    std::vector<E> es;
    std::vector<int> start;
};

} // namespace noya2
#line 5 "c.cpp"

void solve(){
    int n, m; in(n,m);
    csr<int> g(n,m), g2(n);
    scc_graph sccg(n);
    rep(i,m){
        int u, v, t; in(u,v,t); u--, v--;
        g.add(u,v);
        if (t == 2){
            sccg.add_edge(u,v);
            g2.add(u,v);
        }
    }
    g2.build();
    vector<bool> vis(n,false);
    vis[0] = true;
    queue<int> que;
    que.push(0);
    while (!que.empty()){
        int v = que.front(); que.pop();
        for (int u : g[v]){
            if (!vis[u]){
                vis[u] = true;
                que.push(u);
            }
        }
    }
    auto scc = sccg.scc();
    vector<int> col(n);
    int sz = scc.size();
    rep(i,sz){
        for (int v : scc[i]){
            col[v] = i;
        }
    }
    rep(v,n){
        if (!vis[v]) continue;
        for (int u : g2[v]){
            if (col[v] != col[u]){
                yes();
                return ;
            }
        }
    }
    no();
}

int main(){
    int t = 1; //in(t);
    while (t--) { solve(); }
}

这程序好像有点Bug,我给组数据试试?

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3536kb

input:

3 4
1 2 1
2 3 2
3 2 1
3 1 2

output:

Yes

result:

ok answer is YES

Test #2:

score: 0
Accepted
time: 1ms
memory: 3508kb

input:

6 8
1 2 1
2 3 2
3 2 2
3 4 1
4 1 2
1 5 2
5 4 2
6 1 2

output:

No

result:

ok answer is NO

Test #3:

score: 0
Accepted
time: 1ms
memory: 3548kb

input:

1000 1000
141 466 1
634 659 1
179 96 2
445 344 2
993 974 1
310 114 2
32 333 1
758 832 1
834 1 1
874 825 2
480 61 2
765 100 2
804 616 1
496 545 1
786 261 2
899 263 1
962 237 2
766 807 1
561 583 1
35 425 1
201 291 1
6 142 1
61 386 2
785 861 2
386 986 2
288 769 2
850 209 1
660 259 2
258 143 2
646 715 2...

output:

Yes

result:

ok answer is YES

Test #4:

score: 0
Accepted
time: 1ms
memory: 3628kb

input:

1000 3000
719 279 2
857 23 1
984 625 2
904 509 2
892 456 2
589 195 2
718 932 2
608 363 1
474 672 1
217 993 2
165 895 2
727 329 2
932 404 2
952 146 2
201 272 2
412 895 2
228 267 2
396 365 2
813 794 2
259 250 1
968 764 2
100 76 2
924 665 2
981 931 2
292 975 2
903 649 2
793 101 2
54 703 1
853 58 2
356 ...

output:

Yes

result:

ok answer is YES

Test #5:

score: 0
Accepted
time: 1ms
memory: 3584kb

input:

1000 3000
686 470 2
132 418 2
775 962 2
814 8 2
450 767 2
580 243 2
742 534 2
508 304 2
396 513 2
731 385 2
499 309 2
144 150 2
111 209 2
340 189 1
219 755 2
511 655 2
428 941 2
165 707 2
253 619 2
140 766 2
999 132 2
415 101 2
887 192 2
598 262 2
312 675 1
97 527 2
407 179 2
11 154 1
107 996 2
586 ...

output:

No

result:

ok answer is NO

Test #6:

score: 0
Accepted
time: 3ms
memory: 4040kb

input:

10000 10000
1496 8533 1
6761 8802 2
3147 8733 2
7074 899 1
4191 9520 2
2576 1464 1
8600 116 2
72 5894 1
1605 6769 1
344 2583 2
9951 8053 2
2663 1396 1
3172 7307 1
8490 8085 2
6623 7814 2
680 4471 2
4906 3810 1
5952 8860 1
9670 3644 2
7993 6329 2
4666 1119 2
3115 3676 2
4506 2979 2
1451 2540 2
5002 9...

output:

No

result:

ok answer is NO

Test #7:

score: 0
Accepted
time: 5ms
memory: 4320kb

input:

10000 30000
8022 6065 2
8185 3186 1
9803 6371 1
4947 1271 2
926 9103 2
8367 1328 2
6314 1627 2
203 4366 2
9992 1021 2
5092 9288 1
7412 6217 2
4569 5568 2
7064 6970 2
4363 1581 2
772 6243 2
2571 4950 2
5821 8367 1
7985 5827 2
2064 4754 2
900 605 1
2083 3137 2
7852 1194 2
4679 6769 2
9389 6753 2
2980 ...

output:

Yes

result:

ok answer is YES

Test #8:

score: 0
Accepted
time: 5ms
memory: 4388kb

input:

10000 30000
6708 6418 2
120 3115 2
1647 6703 1
86 1015 2
5041 8379 2
1926 2108 2
1030 4579 2
1129 4269 2
7245 1725 2
9605 679 2
2903 1467 2
233 9636 2
8796 738 2
1535 7292 2
6010 1476 2
9300 4436 2
7465 5575 2
4508 1537 2
4352 9653 2
6646 4932 2
6069 2244 2
8361 4603 2
3566 9063 2
6836 5173 2
2194 3...

output:

No

result:

ok answer is NO

Test #9:

score: 0
Accepted
time: 55ms
memory: 27240kb

input:

300000 300000
94246 283175 1
83027 278500 2
265400 62933 2
174359 187478 2
175633 104311 1
279454 288119 1
143302 18555 1
258847 186237 1
207649 136874 1
182701 13491 1
261536 220848 1
206849 280776 2
60075 295 2
242474 256281 2
293852 21768 2
36248 183324 2
145642 275253 1
9956 11629 2
25110 265376...

output:

No

result:

ok answer is NO

Test #10:

score: 0
Accepted
time: 84ms
memory: 27008kb

input:

300000 300000
2755 160424 2
156539 216928 2
41979 111770 2
94794 284215 2
88031 115072 1
55508 189463 2
142066 99620 2
68946 262040 2
234053 268389 2
177636 61056 2
216374 97188 1
189152 250356 2
128748 241240 2
260431 9729 2
165046 99023 2
106219 190566 1
228664 97992 2
80967 18715 2
118443 178799 ...

output:

Yes

result:

ok answer is YES

Test #11:

score: 0
Accepted
time: 71ms
memory: 26172kb

input:

300000 300000
201841 218620 2
25571 244075 2
148023 244788 1
12618 187161 2
123903 157292 2
140719 283744 2
48104 57739 2
94140 217701 2
260292 235506 2
244136 52545 2
113842 82619 2
284670 286686 2
102210 172102 2
93693 135210 2
169155 31435 1
121590 294638 2
231463 149656 2
132100 245329 2
78578 2...

output:

No

result:

ok answer is NO

Test #12:

score: 0
Accepted
time: 36ms
memory: 9348kb

input:

10000 300000
8794 9638 2
4124 3198 2
3709 4571 1
7094 2604 2
9787 8634 1
9259 7034 1
805 8951 1
523 1299 2
4067 2337 1
3442 8604 1
990 229 2
5669 9222 2
794 5188 2
7066 4135 1
2328 6841 2
5400 3669 2
8572 6053 2
5808 755 2
1035 9229 2
4699 4976 1
5592 6836 2
3316 5324 1
911 8988 1
6872 3245 2
1266 1...

output:

No

result:

ok answer is NO

Test #13:

score: 0
Accepted
time: 61ms
memory: 19952kb

input:

200000 300000
51429 85416 2
35500 102166 2
77261 111280 2
109595 198771 2
52752 98485 2
123959 146471 1
71558 134628 2
53580 97704 2
41770 26184 2
38726 42080 2
32420 161261 1
93622 14014 2
62442 37971 2
97434 174665 2
35402 17953 2
32481 189105 2
133381 197488 2
59630 152080 2
145316 134738 2
15637...

output:

Yes

result:

ok answer is YES

Test #14:

score: 0
Accepted
time: 64ms
memory: 20540kb

input:

200000 300000
100604 79567 2
78619 82912 2
160923 6515 2
111511 22849 2
191823 122510 2
184746 42969 1
367 87329 2
12385 186721 2
22322 89968 2
30296 23410 2
55379 95908 2
78731 185005 2
16026 95076 2
117553 81021 2
17586 162896 2
112457 64630 2
98272 194597 2
94737 47348 2
182434 141187 2
48901 148...

output:

No

result:

ok answer is NO

Test #15:

score: 0
Accepted
time: 56ms
memory: 13044kb

input:

100000 300000
60010 76924 2
98779 52066 2
29705 3673 2
19807 92766 2
89092 55572 2
57798 98074 2
49433 4252 2
9568 11858 2
6068 37755 2
42537 69332 2
34120 95829 2
70957 69524 1
6979 42493 2
18708 80499 2
23615 10086 1
54682 14663 2
66240 6913 1
96259 63852 2
33994 20136 2
50051 79458 2
59557 23910 ...

output:

Yes

result:

ok answer is YES

Test #16:

score: 0
Accepted
time: 57ms
memory: 12580kb

input:

100000 300000
31467 31057 2
53376 30862 2
34548 19018 1
49459 40636 2
24713 26389 2
72031 39008 2
88386 42964 2
6089 36050 2
95525 7354 2
2150 65839 2
23017 48586 2
96644 53330 1
34717 92329 2
60439 23051 2
93738 40918 2
14792 19952 2
47044 31402 2
50447 82391 2
39716 49649 2
53032 32891 1
21843 227...

output:

No

result:

ok answer is NO

Test #17:

score: 0
Accepted
time: 36ms
memory: 9392kb

input:

50000 300000
13657 42151 1
4207 48263 2
19913 14856 1
20252 19946 1
36552 16773 2
15641 47894 1
31929 33862 1
37186 35146 1
26141 19435 1
13344 16689 1
40537 30282 1
44007 12832 2
34199 4971 2
9613 32152 1
22680 7733 1
22821 37016 1
28192 6124 2
20231 20606 2
31231 11050 1
29171 1156 2
10913 10822 2...

output:

Yes

result:

ok answer is YES

Test #18:

score: 0
Accepted
time: 40ms
memory: 9668kb

input:

50000 300000
27901 2832 1
36611 18040 1
11569 29790 1
18772 5119 1
7295 20713 2
34886 41675 1
25208 25186 2
16871 28421 1
16342 25825 1
45452 6926 1
19333 47812 1
49794 31792 2
47593 29029 1
28847 13670 2
10893 34216 2
38904 38242 1
20662 21579 1
39456 43904 2
10339 35210 1
28253 11494 2
22 12016 2
...

output:

No

result:

ok answer is NO

Test #19:

score: 0
Accepted
time: 36ms
memory: 8472kb

input:

25000 300000
15694 6658 1
12187 18447 1
7540 10018 2
6657 5485 1
21747 711 1
12141 9379 1
21107 3608 1
2289 12866 1
23634 21695 2
19657 17685 2
7651 7593 1
14284 17908 1
7629 9649 1
6823 23485 1
534 24307 2
22109 6259 1
21590 6443 2
22852 13772 1
6668 21394 1
11103 4709 1
13738 22004 2
1428 11491 1
...

output:

Yes

result:

ok answer is YES

Test #20:

score: 0
Accepted
time: 40ms
memory: 8604kb

input:

25000 300000
20441 13493 1
362 263 1
2835 1312 1
22325 18409 1
4902 3889 1
11908 10885 2
20159 19508 1
22897 21371 1
803 24842 1
15205 19941 1
1454 20196 2
24937 1426 1
7432 16934 1
2006 12538 1
14316 17932 1
10790 1834 1
142 19649 2
3390 22164 2
14482 11138 1
24265 21337 1
16629 20993 1
14448 23824...

output:

No

result:

ok answer is NO

Test #21:

score: 0
Accepted
time: 44ms
memory: 20720kb

input:

200000 299998
1 2 1
1 3 1
3 2 2
1 4 1
4 2 2
1 5 1
5 2 2
1 6 1
6 2 2
1 7 1
7 2 2
1 8 1
8 2 2
1 9 1
9 2 2
1 10 1
10 2 2
1 11 1
11 2 2
1 12 1
12 2 2
1 13 1
13 2 2
1 14 1
14 2 2
1 15 1
15 2 2
1 16 1
16 2 2
1 17 1
17 2 2
1 18 1
18 2 2
1 19 1
19 2 2
1 20 1
20 2 2
1 21 1
21 2 2
1 22 1
22 2 2
1 23 1
23 2 2
...

output:

Yes

result:

ok answer is YES

Extra Test:

score: 0
Extra Test Passed