2 条题解

  • 0
    @ 2024-12-28 14:18:21

    暴力出奇迹,搭配上O2轻松通过这道题

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 5e4 + 5;
    int n, m, u, v, w, ans;
    struct Node {
    	int v, w;
    } ;
    struct P {
    	int u, v, w;
    	bool operator<(const P& other) const {
    	    return tie(u, v, w) < tie(other.u, other.v, other.w);
    	}
    };
    vector <Node> p[2005];
    set <P> ma;
    int read(){
        int x=0,f=1;
        char ch=getchar();
        while(ch<'0' || ch>'9'){ if(ch=='-') f=-1;ch=getchar();}
        while(ch>='0' && ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
        return x*f;
    }
    int main() {
        n = read(); m = read();
        while (m--) {
    		u = read(); v = read(); w = read();
    		p[u].push_back({v, w});
    		ma.insert({u, v, w});
    	}
    	for (int i = 1; i <= n; ++i)
    		for (int j = 0; j < p[i].size(); ++j) {
    			int b = p[i][j].v, c = p[i][j].w;
    			for (int k = 0; k < p[b].size(); ++k) {
    				int d = p[b][k].w;
    				if (c != p[b][k].v) continue;
    				if (ma.find({i, b, d}) != ma.end() && ma.find({i, c, d}) != ma.end()) 
    					++ans;
    			}
    		}
    	printf("%d", ans);
        return 0;
    }
    
    • -4
      @ 2024-9-28 21:26:11

      貌似没有人提交题解,我来一个吧,发现没有题解的题通过率那么低。

      #include<bits/stdc++.h>
      using namespace std;
      int n,m,cnt=0;
      vector<int> eg[2005][2005];
      bool *ex[2005][2005];
      int main(){
      	scanf("%d%d",&n,&m);
      	for(int i=1;i<=m;i++){
      		int u,v,w;
      		scanf("%d%d%d",&u,&v,&w);
      		eg[u][v].emplace_back(w);
      		if(ex[v][w]==nullptr){
      			ex[v][w]=new bool[2005];
      			memset(ex[v][w],0,2005);
      		}
      		ex[v][w][u]=1;
      	}
      	for(int a=1;a<n;a++)
      		for(int b=a+1;b<=n;b++){
      			sort(eg[a][b].begin(),eg[a][b].end());
      			for(int cc=0;cc<eg[a][b].size();cc++)
      				for(int dd=cc+1;dd<eg[a][b].size();dd++){
      					int c=eg[a][b][cc],d=eg[a][b][dd];
      					if(ex[c][d]!=nullptr && ex[c][d][a] && ex[c][d][b])
      						cnt++;
      				}
      		}
      	cout<<cnt<<endl;
      	return 0;
      }
      

      代码自己理解,保证全AC

      • 1

      信息

      ID
      43
      时间
      1000ms
      内存
      512MiB
      难度
      4
      标签
      递交数
      744
      已通过
      95
      上传者