1 条题解

  • 1
    @ 2023-11-19 19:41:01

    初次使用floyd算法 本来用矩阵想用一层循环(怕runtime error)但想不通,没想到用简单的四行代码就解决了,惊艳

    #include<iostream>
    using namespace std;
    int g[110][110];
    
    void Floyd(int x[][110])
    {
    	for(int k=1;k<=100;k++)
    		for(int i=1;i<=100;i++)
    			for(int j=1;j<=100;j++)
    				if(x[i][k]&&x[k][j])
    					x[i][j]=1;
    }
    int main()
    {
    	int n; cin>>n;
    	for(int i=0;i<n;i++)
    	{
    		int x, y;
    		cin>>x>>y;
    		g[x][y]=1;
    	} 
    	Floyd(g);
    	int cnt=0;
    	for(int i=1;i<=100;i++)
    		for(int j=1;j<=100;j++)
    			if(g[i][j])
    				cnt++;
    	cout<<cnt<<endl;
    	return 0;
    			
    }
    
    • 1

    信息

    ID
    35
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    (无)
    递交数
    143
    已通过
    50
    上传者